From 68e0bc6e4356d742fb406471083713513b08b9a6 Mon Sep 17 00:00:00 2001 From: Nestor Lucas Martinez Date: Fri, 31 Jul 2015 14:46:28 +0200 Subject: [PATCH] Release commit --- License | 24 + build.properties | 10 + build.xml | 110 + .../eu/artemis/demanes/datatypes/ANES_BUNDLE.class | Bin 0 -> 686 bytes build/eu/artemis/demanes/datatypes/ANES_URN.class | Bin 0 -> 2681 bytes .../demanes/datatypes/ANES_URN_Exception.class | Bin 0 -> 479 bytes .../exceptions/ActionInvocationException.class | Bin 0 -> 907 bytes .../demanes/exceptions/InexistentActionID.class | Bin 0 -> 794 bytes .../exceptions/InexistentObservationID.class | Bin 0 -> 814 bytes .../exceptions/NonExistentKeyException.class | Bin 0 -> 697 bytes .../ObservationInvocationException.class | Bin 0 -> 928 bytes .../demanes/exceptions/TypedRequestException.class | Bin 0 -> 1143 bytes .../impl/SunSPOT/SunSPOTPowerController.class | Bin 0 -> 10562 bytes .../impl/SunSPOT/common/DEMANESResources.class | Bin 0 -> 873 bytes .../demanes/impl/SunSPOT/common/Events.class | Bin 0 -> 491 bytes .../impl/SunSPOT/common/MediatorProperties.class | Bin 0 -> 477 bytes .../impl/SunSPOT/common/PTActionProperties.class | Bin 0 -> 434 bytes .../impl/SunSPOT/common/RadioProperties.class | Bin 0 -> 2658 bytes .../impl/SunSPOT/common/ReasonerProperties.class | Bin 0 -> 1102 bytes .../SunSPOT/common/ReconfigurationContext.class | Bin 0 -> 4000 bytes .../impl/SunSPOT/common/SystemContext.class | Bin 0 -> 3110 bytes .../impl/SunSPOT/common/SystemProperties.class | Bin 0 -> 2915 bytes .../SunSPOT/common/TriggerPolicyProperties.class | Bin 0 -> 775 bytes .../CommunicationManager$RadiogramAddress.class | Bin 0 -> 1524 bytes .../communications/CommunicationManager.class | Bin 0 -> 3897 bytes .../SunSPOT/communications/RemoteManagement.class | Bin 0 -> 3252 bytes .../SunSPOT/communications/RoutingListener.class | Bin 0 -> 2946 bytes .../impl/SunSPOT/datatypes/SunSPOTBundle.class | Bin 0 -> 2113 bytes .../impl/SunSPOT/fuzzyReasoner/DefaultConfig.class | Bin 0 -> 1081 bytes .../impl/SunSPOT/fuzzyReasoner/ERRORMSG.class | Bin 0 -> 2148 bytes .../impl/SunSPOT/fuzzyReasoner/FuzzyDM.class | Bin 0 -> 676 bytes .../SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.class | Bin 0 -> 9873 bytes .../demanes/impl/SunSPOT/fuzzyReasoner/KEY.class | Bin 0 -> 871 bytes .../fuzzyReasoner/PowerScalingController.class | Bin 0 -> 12595 bytes .../PowerScalingControllerFactory.class | Bin 0 -> 1244 bytes .../PowerScalingControllerFuzzyLogic.class | Bin 0 -> 10688 bytes .../PowerScalingControllerInterp1FDM.class | Bin 0 -> 14978 bytes .../impl/SunSPOT/fuzzyReasoner/Variable.class | Bin 0 -> 2940 bytes .../reconfiguration/ORAMediatorForSunSPOT.class | Bin 0 -> 8930 bytes .../PowerScalingMonitor$1.class | Bin 0 -> 9616 bytes .../PowerScalingMonitor$ReasonObservation.class | Bin 0 -> 2760 bytes ...owerScalingMonitor$ReasonObservationValue.class | Bin 0 -> 2811 bytes .../PowerScalingMonitor/PowerScalingMonitor.class | Bin 0 -> 20965 bytes .../actions/PowerTransmissionActuator$1.class | Bin 0 -> 328 bytes ...ionActuator$updatePowerTransmissionAction.class | Bin 0 -> 5139 bytes .../actions/PowerTransmissionActuator.class | Bin 0 -> 2268 bytes .../reconfiguration/actions/ResetActuator.class | Bin 0 -> 185 bytes .../observations/BatteryLevelObservation.class | Bin 0 -> 3604 bytes .../observations/NodeDegreeObservation.class | Bin 0 -> 3524 bytes .../NodeDegreeObservationExtension.class | Bin 0 -> 251 bytes .../observations/ObservationException.class | Bin 0 -> 902 bytes .../observations/ObservationFactory.class | Bin 0 -> 1484 bytes .../observations/ObservationFactoryException.class | Bin 0 -> 711 bytes .../observations/ObservationType.class | Bin 0 -> 1427 bytes .../impl/SunSPOT/utils/LEDMarquee/Marquee$1.class | Bin 0 -> 260 bytes .../SunSPOT/utils/LEDMarquee/Marquee$Engine.class | Bin 0 -> 2951 bytes .../impl/SunSPOT/utils/LEDMarquee/Marquee.class | Bin 0 -> 6546 bytes .../LEDMarquee/MarqueeAddMessageException.class | Bin 0 -> 812 bytes .../SunSPOT/utils/LEDMarquee/MarqueeMessage.class | Bin 0 -> 1345 bytes .../demanes/impl/SunSPOT/utils/logging/Level.class | Bin 0 -> 1721 bytes .../impl/SunSPOT/utils/logging/Logger.class | Bin 0 -> 6600 bytes .../utils/neighbordiscovery/NDPFactory.class | Bin 0 -> 1275 bytes .../NeighborDiscoveryException.class | Bin 0 -> 476 bytes .../NeighborDiscoveryFactoryException.class | Bin 0 -> 725 bytes .../NeighborDiscoveryProtocol.class | Bin 0 -> 302 bytes .../neighbordiscovery/NeighborDiscoveryType.class | Bin 0 -> 1857 bytes .../NodeDegreeManagerV1$NDInformation$1.class | Bin 0 -> 1309 bytes .../NodeDegreeManagerV1$NDInformation$2.class | Bin 0 -> 980 bytes .../NodeDegreeManagerV1$NDInformation.class | Bin 0 -> 4566 bytes .../NodeDegreeManagerV1$NDTimer.class | Bin 0 -> 2491 bytes ...NodeDegreeManagerV1$NeighborsDiscoveryMgr.class | Bin 0 -> 6837 bytes .../neighbordiscovery/NodeDegreeManagerV1.class | Bin 0 -> 2913 bytes .../NodeDegreeManagerV2$NDInformation.class | Bin 0 -> 5120 bytes .../NodeDegreeManagerV2$NDTimer.class | Bin 0 -> 2391 bytes ...NodeDegreeManagerV2$NeighborsDiscoveryMgr.class | Bin 0 -> 6847 bytes .../neighbordiscovery/NodeDegreeManagerV2.class | Bin 0 -> 2738 bytes .../ondemand/OnDemandNeighborDiscovery$1.class | Bin 0 -> 346 bytes .../OnDemandNeighborDiscovery$NDEngine.class | Bin 0 -> 6920 bytes .../ondemand/OnDemandNeighborDiscovery.class | Bin 0 -> 5984 bytes ...ndNeighborDiscoveryCommunicationsListener.class | Bin 0 -> 4109 bytes .../OnDemandNeighborDiscoveryListener.class | Bin 0 -> 286 bytes .../OnDemandNeighborDiscoveryRequester.class | Bin 0 -> 4240 bytes .../ondemand/OnDemandNeighborTableManager.class | Bin 0 -> 4598 bytes .../pdu/NeighborDiscoveryPDU.class | Bin 0 -> 3443 bytes .../pdu/NeighborDiscoveryPDUException.class | Bin 0 -> 775 bytes .../artemis/demanes/reconfiguration/Action.class | Bin 0 -> 343 bytes .../demanes/reconfiguration/ActionProvider.class | Bin 0 -> 432 bytes .../artemis/demanes/reconfiguration/Actuator.class | Bin 0 -> 176 bytes .../demanes/reconfiguration/ActuatorRegistry.class | Bin 0 -> 255 bytes .../demanes/reconfiguration/ORAMediator.class | Bin 0 -> 415 bytes .../demanes/reconfiguration/Observation.class | Bin 0 -> 340 bytes .../reconfiguration/ObservationProvider.class | Bin 0 -> 434 bytes .../artemis/demanes/reconfiguration/Observer.class | Bin 0 -> 181 bytes .../demanes/reconfiguration/ObserverRegistry.class | Bin 0 -> 255 bytes .../artemis/demanes/reconfiguration/Reasoner.class | Bin 0 -> 369 bytes .../demanes/reconfiguration/TriggerPolicy.class | Bin 0 -> 330 bytes .../demanes/reconfiguration/Triggerable.class | Bin 0 -> 233 bytes doc/allclasses-frame.html | 101 + doc/allclasses-frame.html.mine | 72 + doc/allclasses-frame.html.r390 | 44 + doc/allclasses-frame.html.r409 | 71 + doc/allclasses-noframe.html | 71 + doc/constant-values.html | 1344 ++++++++++++ doc/constant-values.html.mine | 1200 +++++++++++ doc/constant-values.html.r390 | 662 ++++++ doc/constant-values.html.r409 | 1174 ++++++++++ doc/deprecated-list.html | 132 ++ doc/deprecated-list.html.mine | 124 ++ doc/deprecated-list.html.r390 | 115 + doc/deprecated-list.html.r409 | 124 ++ .../impl/SunSPOT/SunSPOTPowerController.html | 410 ++++ .../impl/SunSPOT/SunSPOTPowerController.html.mine | 402 ++++ .../impl/SunSPOT/SunSPOTPowerController.html.r390 | 334 +++ .../impl/SunSPOT/SunSPOTPowerController.html.r409 | 402 ++++ .../demanes/impl/SunSPOT/TesterForController.html | 320 +++ .../impl/SunSPOT/TriggerPolicy/NDObservation.html | 338 +++ .../SunSPOT/TriggerPolicy/PowerScalingMonitor.html | 565 +++++ .../SunSPOT/TriggerPolicy/TestControllerOuput.html | 266 +++ .../impl/SunSPOT/TriggerPolicy/package-frame.html | 21 + .../SunSPOT/TriggerPolicy/package-summary.html | 141 ++ .../impl/SunSPOT/TriggerPolicy/package-tree.html | 130 ++ .../impl/SunSPOT/common/DEMANESResources.html | 340 +++ .../impl/SunSPOT/common/DEMANESResources.html.mine | 332 +++ .../impl/SunSPOT/common/DEMANESResources.html.r390 | 309 +++ .../impl/SunSPOT/common/DEMANESResources.html.r409 | 332 +++ .../demanes/impl/SunSPOT/common/Events.html | 306 +++ .../demanes/impl/SunSPOT/common/Events.html.mine | 298 +++ .../demanes/impl/SunSPOT/common/Events.html.r390 | 281 +++ .../demanes/impl/SunSPOT/common/Events.html.r409 | 298 +++ .../impl/SunSPOT/common/MediatorProperties.html | 289 +++ .../SunSPOT/common/MediatorProperties.html.mine | 281 +++ .../SunSPOT/common/MediatorProperties.html.r390 | 267 +++ .../SunSPOT/common/MediatorProperties.html.r409 | 281 +++ .../impl/SunSPOT/common/PTActionProperties.html | 289 +++ .../SunSPOT/common/PTActionProperties.html.mine | 281 +++ .../SunSPOT/common/PTActionProperties.html.r390 | 267 +++ .../SunSPOT/common/PTActionProperties.html.r409 | 281 +++ .../impl/SunSPOT/common/RadioProperties.html | 522 +++++ .../impl/SunSPOT/common/ReasonerProperties.html | 510 +++++ .../SunSPOT/common/ReasonerProperties.html.mine | 502 +++++ .../SunSPOT/common/ReasonerProperties.html.r390 | 351 +++ .../SunSPOT/common/ReasonerProperties.html.r409 | 502 +++++ .../SunSPOT/common/ReconfigurationResources.html | 340 +++ .../common/ReconfigurationResources.html.mine | 332 +++ .../common/ReconfigurationResources.html.r390 | 309 +++ .../common/ReconfigurationResources.html.r409 | 332 +++ .../demanes/impl/SunSPOT/common/SystemContext.html | 327 +++ .../impl/SunSPOT/common/SystemProperties.html | 489 +++++ .../impl/SunSPOT/common/SystemProperties.html.mine | 481 +++++ .../impl/SunSPOT/common/SystemProperties.html.r390 | 308 +++ .../impl/SunSPOT/common/SystemProperties.html.r409 | 481 +++++ .../SunSPOT/common/TriggerPolicyProperties.html | 391 ++++ .../common/TriggerPolicyProperties.html.mine | 383 ++++ .../common/TriggerPolicyProperties.html.r390 | 337 +++ .../common/TriggerPolicyProperties.html.r409 | 383 ++++ .../demanes/impl/SunSPOT/common/package-frame.html | 37 + .../impl/SunSPOT/common/package-frame.html.mine | 29 + .../impl/SunSPOT/common/package-frame.html.r390 | 26 + .../impl/SunSPOT/common/package-frame.html.r409 | 29 + .../impl/SunSPOT/common/package-summary.html | 186 ++ .../impl/SunSPOT/common/package-summary.html.mine | 178 ++ .../impl/SunSPOT/common/package-summary.html.r390 | 161 ++ .../impl/SunSPOT/common/package-summary.html.r409 | 178 ++ .../demanes/impl/SunSPOT/common/package-tree.html | 154 ++ .../impl/SunSPOT/common/package-tree.html.mine | 146 ++ .../impl/SunSPOT/common/package-tree.html.r390 | 135 ++ .../impl/SunSPOT/common/package-tree.html.r409 | 146 ++ .../communications/CommunicationListener.html | 235 ++ .../communications/CommunicationManager.html | 451 ++++ .../SunSPOT/communications/RoutingListener.html | 424 ++++ .../impl/SunSPOT/communications/package-frame.html | 25 + .../SunSPOT/communications/package-summary.html | 161 ++ .../impl/SunSPOT/communications/package-tree.html | 142 ++ .../impl/SunSPOT/datatypes/SunSPOTBundle.html | 413 ++++ .../impl/SunSPOT/datatypes/SunSPOTBundle.html.mine | 405 ++++ .../impl/SunSPOT/datatypes/SunSPOTBundle.html.r390 | 385 ++++ .../impl/SunSPOT/datatypes/SunSPOTBundle.html.r409 | 405 ++++ .../impl/SunSPOT/datatypes/package-frame.html | 28 + .../impl/SunSPOT/datatypes/package-frame.html.mine | 20 + .../impl/SunSPOT/datatypes/package-frame.html.r390 | 19 + .../impl/SunSPOT/datatypes/package-frame.html.r409 | 20 + .../impl/SunSPOT/datatypes/package-summary.html | 150 ++ .../SunSPOT/datatypes/package-summary.html.mine | 142 ++ .../SunSPOT/datatypes/package-summary.html.r390 | 133 ++ .../SunSPOT/datatypes/package-summary.html.r409 | 142 ++ .../impl/SunSPOT/datatypes/package-tree.html | 145 ++ .../impl/SunSPOT/datatypes/package-tree.html.mine | 137 ++ .../impl/SunSPOT/datatypes/package-tree.html.r390 | 128 ++ .../impl/SunSPOT/datatypes/package-tree.html.r409 | 137 ++ .../impl/SunSPOT/fuzzyReasoner/DefaultConfig.html | 313 +++ .../impl/SunSPOT/fuzzyReasoner/ERRORMSG.html | 529 +++++ .../impl/SunSPOT/fuzzyReasoner/FuzzyDM.html | 406 ++++ .../impl/SunSPOT/fuzzyReasoner/FuzzyDM.html.mine | 398 ++++ .../impl/SunSPOT/fuzzyReasoner/FuzzyDM.html.r390 | 330 +++ .../impl/SunSPOT/fuzzyReasoner/FuzzyDM.html.r409 | 398 ++++ .../SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html | 534 +++++ .../fuzzyReasoner/Interp1DFuzzyDM.html.mine | 526 +++++ .../fuzzyReasoner/Interp1DFuzzyDM.html.r390 | 731 +++++++ .../fuzzyReasoner/Interp1DFuzzyDM.html.r409 | 526 +++++ .../demanes/impl/SunSPOT/fuzzyReasoner/KEY.html | 469 ++++ .../fuzzyReasoner/PowerScalingController.html | 405 ++++ .../fuzzyReasoner/PowerScalingController.html.mine | 397 ++++ .../fuzzyReasoner/PowerScalingController.html.r390 | 376 ++++ .../fuzzyReasoner/PowerScalingController.html.r409 | 397 ++++ .../PowerScalingControllerFactory.html | 277 +++ .../PowerScalingControllerFuzzyLogic.html | 391 ++++ .../PowerScalingControllerInterp1FDM.html | 397 ++++ .../impl/SunSPOT/fuzzyReasoner/Variable.html | 524 +++++ .../impl/SunSPOT/fuzzyReasoner/package-frame.html | 40 + .../SunSPOT/fuzzyReasoner/package-frame.html.mine | 32 + .../SunSPOT/fuzzyReasoner/package-frame.html.r390 | 26 + .../SunSPOT/fuzzyReasoner/package-frame.html.r409 | 32 + .../SunSPOT/fuzzyReasoner/package-summary.html | 214 ++ .../fuzzyReasoner/package-summary.html.mine | 206 ++ .../fuzzyReasoner/package-summary.html.r390 | 167 ++ .../fuzzyReasoner/package-summary.html.r409 | 206 ++ .../impl/SunSPOT/fuzzyReasoner/package-tree.html | 157 ++ .../SunSPOT/fuzzyReasoner/package-tree.html.mine | 149 ++ .../SunSPOT/fuzzyReasoner/package-tree.html.r390 | 135 ++ .../SunSPOT/fuzzyReasoner/package-tree.html.r409 | 149 ++ .../demanes/impl/SunSPOT/package-frame.html | 28 + .../demanes/impl/SunSPOT/package-frame.html.mine | 20 + .../demanes/impl/SunSPOT/package-frame.html.r390 | 20 + .../demanes/impl/SunSPOT/package-frame.html.r409 | 20 + .../demanes/impl/SunSPOT/package-summary.html | 153 ++ .../demanes/impl/SunSPOT/package-summary.html.mine | 145 ++ .../demanes/impl/SunSPOT/package-summary.html.r390 | 143 ++ .../demanes/impl/SunSPOT/package-summary.html.r409 | 145 ++ .../artemis/demanes/impl/SunSPOT/package-tree.html | 149 ++ .../demanes/impl/SunSPOT/package-tree.html.mine | 141 ++ .../demanes/impl/SunSPOT/package-tree.html.r390 | 133 ++ .../demanes/impl/SunSPOT/package-tree.html.r409 | 141 ++ .../SunSPOT/reconfiguration/ActuatorControl.html | 231 ++ .../reconfiguration/ORAMediatorForSunSPOT.html | 656 ++++++ .../ORAMediatorForSunSPOT.html.mine | 630 ++++++ .../ORAMediatorForSunSPOT.html.r390 | 616 ++++++ .../ORAMediatorForSunSPOT.html.r409 | 650 ++++++ .../PowerScalingMonitor/PowerScalingMonitor.html | 602 ++++++ .../PowerScalingMonitor/package-frame.html | 20 + .../PowerScalingMonitor/package-summary.html | 142 ++ .../PowerScalingMonitor/package-tree.html | 137 ++ .../reconfiguration/PowerTransmissionActuator.html | 294 +++ .../actions/PowerTransmissionActuator.html | 314 +++ .../reconfiguration/actions/package-frame.html | 20 + .../reconfiguration/actions/package-summary.html | 144 ++ .../reconfiguration/actions/package-tree.html | 137 ++ .../observations/BatteryLevelObservation.html | 316 +++ .../observations/NodeDegreeObservation.html | 411 ++++ .../NodeDegreeObservationExtension.html | 229 ++ .../observations/ObservationFactory.html | 287 +++ .../observations/ObservationType.html | 541 +++++ .../observations/package-frame.html | 27 + .../observations/package-summary.html | 169 ++ .../reconfiguration/observations/package-tree.html | 144 ++ .../SunSPOT/reconfiguration/package-frame.html | 32 + .../reconfiguration/package-frame.html.mine | 24 + .../reconfiguration/package-frame.html.r390 | 20 + .../reconfiguration/package-frame.html.r409 | 24 + .../SunSPOT/reconfiguration/package-summary.html | 165 ++ .../reconfiguration/package-summary.html.mine | 157 ++ .../reconfiguration/package-summary.html.r390 | 137 ++ .../reconfiguration/package-summary.html.r409 | 157 ++ .../impl/SunSPOT/reconfiguration/package-tree.html | 149 ++ .../SunSPOT/reconfiguration/package-tree.html.mine | 141 ++ .../SunSPOT/reconfiguration/package-tree.html.r390 | 129 ++ .../SunSPOT/reconfiguration/package-tree.html.r409 | 141 ++ .../demanes/impl/SunSPOT/tests/TestController.html | 230 ++ .../demanes/impl/SunSPOT/tests/TestObserver.html | 283 +++ .../demanes/impl/SunSPOT/tests/TestReasoner.html | 382 ++++ .../impl/SunSPOT/tests/TestTriggerPolicy.html | 414 ++++ .../demanes/impl/SunSPOT/tests/package-frame.html | 22 + .../impl/SunSPOT/tests/package-summary.html | 145 ++ .../demanes/impl/SunSPOT/tests/package-tree.html | 131 ++ .../impl/SunSPOT/utils/LEDMarquee/Marquee.html | 580 +++++ .../LEDMarquee/MarqueeAddMessageException.html | 276 +++ .../SunSPOT/utils/LEDMarquee/MarqueeMessage.html | 355 +++ .../SunSPOT/utils/LEDMarquee/package-frame.html | 25 + .../SunSPOT/utils/LEDMarquee/package-summary.html | 165 ++ .../SunSPOT/utils/LEDMarquee/package-tree.html | 147 ++ .../demanes/impl/SunSPOT/utils/hal/Marquee.html | 580 +++++ .../utils/hal/MarqueeAddMessageException.html | 276 +++ .../impl/SunSPOT/utils/hal/MarqueeMessage.html | 355 +++ .../demanes/impl/SunSPOT/utils/hal/Switch.html | 535 +++++ .../impl/SunSPOT/utils/hal/package-frame.html | 26 + .../impl/SunSPOT/utils/hal/package-summary.html | 169 ++ .../impl/SunSPOT/utils/hal/package-tree.html | 148 ++ .../demanes/impl/SunSPOT/utils/logging/Level.html | 617 ++++++ .../impl/SunSPOT/utils/logging/Level.html.mine | 609 ++++++ .../impl/SunSPOT/utils/logging/Level.html.r390 | 553 +++++ .../impl/SunSPOT/utils/logging/Level.html.r409 | 609 ++++++ .../demanes/impl/SunSPOT/utils/logging/Logger.html | 707 ++++++ .../impl/SunSPOT/utils/logging/Logger.html.mine | 699 ++++++ .../impl/SunSPOT/utils/logging/Logger.html.r390 | 615 ++++++ .../impl/SunSPOT/utils/logging/Logger.html.r409 | 699 ++++++ .../impl/SunSPOT/utils/logging/package-frame.html | 29 + .../SunSPOT/utils/logging/package-frame.html.mine | 21 + .../SunSPOT/utils/logging/package-frame.html.r390 | 20 + .../SunSPOT/utils/logging/package-frame.html.r409 | 21 + .../SunSPOT/utils/logging/package-summary.html | 157 ++ .../utils/logging/package-summary.html.mine | 149 ++ .../utils/logging/package-summary.html.r390 | 140 ++ .../utils/logging/package-summary.html.r409 | 149 ++ .../impl/SunSPOT/utils/logging/package-tree.html | 146 ++ .../SunSPOT/utils/logging/package-tree.html.mine | 138 ++ .../SunSPOT/utils/logging/package-tree.html.r390 | 129 ++ .../SunSPOT/utils/logging/package-tree.html.r409 | 138 ++ .../utils/neighbordiscovery/NDPFactory.html | 290 +++ .../NeighborDiscoveryException.html | 264 +++ .../NeighborDiscoveryFactoryException.html | 264 +++ .../NeighborDiscoveryProtocol.html | 268 +++ .../neighbordiscovery/NeighborDiscoveryType.html | 541 +++++ .../neighbordiscovery/NodeDegreeManagerV1.html | 341 +++ .../neighbordiscovery/NodeDegreeManagerV2.html | 341 +++ .../ondemand/OnDemandNeighborDiscovery.html | 474 ++++ ...andNeighborDiscoveryCommunicationsListener.html | 362 ++++ .../OnDemandNeighborDiscoveryListener.html | 229 ++ .../OnDemandNeighborDiscoveryOriginal.html | 448 ++++ .../OnDemandNeighborDiscoveryRequester.html | 353 +++ .../ondemand/OnDemandNeighborTableManager.html | 378 ++++ .../neighbordiscovery/ondemand/package-frame.html | 28 + .../ondemand/package-summary.html | 173 ++ .../neighbordiscovery/ondemand/package-tree.html | 145 ++ .../utils/neighbordiscovery/package-frame.html | 32 + .../utils/neighbordiscovery/package-summary.html | 191 ++ .../utils/neighbordiscovery/package-tree.html | 154 ++ .../pdu/NeighborDiscoveryPDU.html | 428 ++++ .../pdu/NeighborDiscoveryPDUException.html | 266 +++ .../utils/neighbordiscovery/pdu/package-frame.html | 24 + .../neighbordiscovery/pdu/package-summary.html | 157 ++ .../utils/neighbordiscovery/pdu/package-tree.html | 146 ++ doc/help-doc.html | 233 ++ doc/help-doc.html.mine | 225 ++ doc/help-doc.html.r390 | 216 ++ doc/help-doc.html.r409 | 225 ++ doc/index-all.html | 2268 ++++++++++++++++++++ doc/index-all.html.mine | 1397 ++++++++++++ doc/index-all.html.r390 | 800 +++++++ doc/index-all.html.r409 | 1469 +++++++++++++ doc/index.html | 78 + doc/index.html.mine | 74 + doc/index.html.r390 | 67 + doc/index.html.r409 | 74 + doc/overview-frame.html | 43 + doc/overview-frame.html.mine | 35 + doc/overview-frame.html.r390 | 28 + doc/overview-frame.html.r409 | 35 + doc/overview-summary.html | 198 ++ doc/overview-summary.html.mine | 190 ++ doc/overview-summary.html.r390 | 157 ++ doc/overview-summary.html.r409 | 190 ++ doc/overview-tree.html | 264 +++ doc/overview-tree.html.mine | 218 ++ doc/overview-tree.html.r390 | 168 ++ doc/overview-tree.html.r409 | 217 ++ doc/package-list | 14 + doc/resources/background.gif | Bin 0 -> 2313 bytes doc/resources/tab.gif | Bin 0 -> 291 bytes doc/resources/titlebar.gif | Bin 0 -> 10701 bytes doc/resources/titlebar_end.gif | Bin 0 -> 849 bytes doc/script.js | 30 + doc/serialized-form.html | 184 ++ doc/stylesheet.css | 574 +++++ .../eu/artemis/demanes/datatypes/ANES_BUNDLE.class | Bin 0 -> 686 bytes .../eu/artemis/demanes/datatypes/ANES_URN.class | Bin 0 -> 2800 bytes .../demanes/datatypes/ANES_URN_Exception.class | Bin 0 -> 479 bytes .../exceptions/ActionInvocationException.class | Bin 0 -> 907 bytes .../demanes/exceptions/InexistentActionID.class | Bin 0 -> 794 bytes .../exceptions/InexistentObservationID.class | Bin 0 -> 814 bytes .../exceptions/InvalidContentException.class | Bin 0 -> 421 bytes .../MissingArgumentAnnotationException.class | Bin 0 -> 644 bytes .../exceptions/NonExistentKeyException.class | Bin 0 -> 697 bytes .../ObservationInvocationException.class | Bin 0 -> 928 bytes .../ParameterizationAccessorException.class | Bin 0 -> 1196 bytes .../exceptions/ParameterizationException.class | Bin 0 -> 1046 bytes .../exceptions/ParameterizationLinkException.class | Bin 0 -> 1225 bytes .../exceptions/ParameterizationURNException.class | Bin 0 -> 1253 bytes .../ParameterizationValueTypeException.class | Bin 0 -> 1327 bytes .../ReconfigurationAnnotationException.class | Bin 0 -> 695 bytes .../ReconfigurationAnnotationURNException.class | Bin 0 -> 572 bytes .../exceptions/TaskLifeCycleException.class | Bin 0 -> 418 bytes .../demanes/exceptions/TaskManagerException.class | Bin 0 -> 1471 bytes .../demanes/exceptions/TaskRegistryException.class | Bin 0 -> 1179 bytes .../demanes/exceptions/TypedRequestException.class | Bin 0 -> 1143 bytes .../impl/SunSPOT/SunSPOTPowerController$1.class | Bin 0 -> 3103 bytes .../impl/SunSPOT/SunSPOTPowerController.class | Bin 0 -> 11255 bytes .../TriggerPolicy/PowerScalingMonitor$1.class | Bin 0 -> 13541 bytes .../TriggerPolicy/PowerScalingMonitor.class | Bin 0 -> 15765 bytes .../impl/SunSPOT/common/DEMANESResources.class | Bin 0 -> 873 bytes .../demanes/impl/SunSPOT/common/Events.class | Bin 0 -> 491 bytes .../impl/SunSPOT/common/MediatorProperties.class | Bin 0 -> 477 bytes .../impl/SunSPOT/common/PTActionProperties.class | Bin 0 -> 434 bytes .../impl/SunSPOT/common/RadioProperties.class | Bin 0 -> 2866 bytes .../impl/SunSPOT/common/ReasonerProperties.class | Bin 0 -> 1102 bytes .../SunSPOT/common/ReconfigurationContext.class | Bin 0 -> 4106 bytes .../SunSPOT/common/ReconfigurationResources.class | Bin 0 -> 715 bytes .../impl/SunSPOT/common/SystemContext.class | Bin 0 -> 3207 bytes .../impl/SunSPOT/common/SystemProperties.class | Bin 0 -> 2969 bytes .../SunSPOT/common/TriggerPolicyProperties.class | Bin 0 -> 775 bytes .../communications/CommunicationListener.class | Bin 0 -> 243 bytes .../CommunicationManager$RadiogramAddress.class | Bin 0 -> 1524 bytes .../CommunicationManager$Receiver.class | Bin 0 -> 1874 bytes .../communications/CommunicationManager.class | Bin 0 -> 4347 bytes .../SunSPOT/communications/RemoteManagement.class | Bin 0 -> 3361 bytes .../SunSPOT/communications/RoutingListener.class | Bin 0 -> 2946 bytes .../impl/SunSPOT/datatypes/SunSPOTBundle.class | Bin 0 -> 2283 bytes .../deepSleepManagement/IDeepSleepAware.class | Bin 0 -> 198 bytes .../impl/SunSPOT/fuzzyReasoner/DefaultConfig.class | Bin 0 -> 1081 bytes .../impl/SunSPOT/fuzzyReasoner/ERRORMSG.class | Bin 0 -> 2148 bytes .../impl/SunSPOT/fuzzyReasoner/FuzzyDM.class | Bin 0 -> 676 bytes .../SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.class | Bin 0 -> 11368 bytes .../demanes/impl/SunSPOT/fuzzyReasoner/KEY.class | Bin 0 -> 871 bytes .../fuzzyReasoner/PowerScalingController.class | Bin 0 -> 13784 bytes .../PowerScalingControllerFactory.class | Bin 0 -> 1347 bytes .../PowerScalingControllerFuzzyLogic.class | Bin 0 -> 11504 bytes .../PowerScalingControllerInterp1FDM.class | Bin 0 -> 16582 bytes .../impl/SunSPOT/fuzzyReasoner/TestFuzzyDM.class | Bin 0 -> 3325 bytes .../impl/SunSPOT/fuzzyReasoner/Variable.class | Bin 0 -> 2993 bytes .../reconfiguration/ORAMediatorForSunSPOT.class | Bin 0 -> 9631 bytes .../impl/SunSPOT/reconfiguration/PTAct.class | Bin 0 -> 182 bytes .../PowerScalingMonitor$1.class | Bin 0 -> 10390 bytes .../PowerScalingMonitor$ReasonObservation.class | Bin 0 -> 2791 bytes ...owerScalingMonitor$ReasonObservationValue.class | Bin 0 -> 2842 bytes .../PowerScalingMonitor/PowerScalingMonitor.class | Bin 0 -> 22427 bytes .../PowerTransmissionActuator$1.class | Bin 0 -> 312 bytes ...ionActuator$updatePowerTransmissionAction.class | Bin 0 -> 5260 bytes .../PowerTransmissionActuator.class | Bin 0 -> 2546 bytes .../actions/PowerTransmissionActuator$1.class | Bin 0 -> 328 bytes ...ionActuator$updatePowerTransmissionAction.class | Bin 0 -> 5311 bytes .../actions/PowerTransmissionActuator.class | Bin 0 -> 2321 bytes .../reconfiguration/actions/ResetActuator.class | Bin 0 -> 185 bytes .../observations/BatteryLevelObservation.class | Bin 0 -> 3819 bytes .../observations/NodeDegreeObservation.class | Bin 0 -> 3657 bytes .../NodeDegreeObservationExtension.class | Bin 0 -> 251 bytes .../observations/ObservationException.class | Bin 0 -> 902 bytes .../observations/ObservationFactory.class | Bin 0 -> 1609 bytes .../observations/ObservationFactoryException.class | Bin 0 -> 711 bytes .../observations/ObservationType.class | Bin 0 -> 1485 bytes .../impl/SunSPOT/tests/TestController.class | Bin 0 -> 1166 bytes .../tests/TestObserver$TestObservation1.class | Bin 0 -> 2256 bytes .../tests/TestObserver$TestObservation2.class | Bin 0 -> 2267 bytes .../demanes/impl/SunSPOT/tests/TestObserver.class | Bin 0 -> 1641 bytes .../demanes/impl/SunSPOT/tests/TestReasoner.class | Bin 0 -> 5693 bytes .../impl/SunSPOT/tests/TestTriggerPolicy$1.class | Bin 0 -> 1579 bytes .../impl/SunSPOT/tests/TestTriggerPolicy.class | Bin 0 -> 1406 bytes .../impl/SunSPOT/utils/LEDMarquee/Marquee$1.class | Bin 0 -> 260 bytes .../SunSPOT/utils/LEDMarquee/Marquee$Engine.class | Bin 0 -> 3063 bytes .../impl/SunSPOT/utils/LEDMarquee/Marquee.class | Bin 0 -> 6848 bytes .../LEDMarquee/MarqueeAddMessageException.class | Bin 0 -> 812 bytes .../SunSPOT/utils/LEDMarquee/MarqueeMessage.class | Bin 0 -> 1384 bytes .../demanes/impl/SunSPOT/utils/hal/LEDArray.class | Bin 0 -> 6319 bytes .../demanes/impl/SunSPOT/utils/hal/Marquee$1.class | Bin 0 -> 246 bytes .../impl/SunSPOT/utils/hal/Marquee$Engine.class | Bin 0 -> 2951 bytes .../demanes/impl/SunSPOT/utils/hal/Marquee.class | Bin 0 -> 7699 bytes .../utils/hal/MarqueeAddMessageException.class | Bin 0 -> 798 bytes .../impl/SunSPOT/utils/hal/MarqueeMessage.class | Bin 0 -> 1370 bytes .../demanes/impl/SunSPOT/utils/hal/Switch.class | Bin 0 -> 3800 bytes .../demanes/impl/SunSPOT/utils/logging/Level.class | Bin 0 -> 1808 bytes .../impl/SunSPOT/utils/logging/Logger.class | Bin 0 -> 7105 bytes .../utils/neighbordiscovery/NDPFactory.class | Bin 0 -> 1321 bytes .../NeighborDiscoveryException.class | Bin 0 -> 476 bytes .../NeighborDiscoveryFactoryException.class | Bin 0 -> 725 bytes .../NeighborDiscoveryProtocol.class | Bin 0 -> 302 bytes .../neighbordiscovery/NeighborDiscoveryType.class | Bin 0 -> 1915 bytes .../NodeDegreeManagerV1$NDInformation$1.class | Bin 0 -> 1349 bytes .../NodeDegreeManagerV1$NDInformation$2.class | Bin 0 -> 980 bytes .../NodeDegreeManagerV1$NDInformation.class | Bin 0 -> 4912 bytes .../NodeDegreeManagerV1$NDTimer.class | Bin 0 -> 2558 bytes ...NodeDegreeManagerV1$NeighborsDiscoveryMgr.class | Bin 0 -> 7468 bytes .../neighbordiscovery/NodeDegreeManagerV1.class | Bin 0 -> 2913 bytes .../NodeDegreeManagerV2$NDInformation.class | Bin 0 -> 5592 bytes .../NodeDegreeManagerV2$NDTimer.class | Bin 0 -> 2435 bytes ...NodeDegreeManagerV2$NeighborsDiscoveryMgr.class | Bin 0 -> 7479 bytes .../neighbordiscovery/NodeDegreeManagerV2.class | Bin 0 -> 2738 bytes .../ondemand/OnDemandNeighborDiscovery$1.class | Bin 0 -> 346 bytes .../OnDemandNeighborDiscovery$NDEngine.class | Bin 0 -> 7378 bytes .../ondemand/OnDemandNeighborDiscovery.class | Bin 0 -> 6024 bytes ...ndNeighborDiscoveryCommunicationsListener.class | Bin 0 -> 4279 bytes .../OnDemandNeighborDiscoveryListener.class | Bin 0 -> 286 bytes .../OnDemandNeighborDiscoveryOriginal$1.class | Bin 0 -> 7040 bytes .../OnDemandNeighborDiscoveryOriginal.class | Bin 0 -> 5784 bytes .../OnDemandNeighborDiscoveryRequester.class | Bin 0 -> 4466 bytes .../ondemand/OnDemandNeighborTableManager.class | Bin 0 -> 4958 bytes .../pdu/NeighborDiscoveryPDU.class | Bin 0 -> 3810 bytes .../pdu/NeighborDiscoveryPDUException.class | Bin 0 -> 775 bytes .../artemis/demanes/reconfiguration/Action.class | Bin 0 -> 343 bytes .../demanes/reconfiguration/ActionProvider.class | Bin 0 -> 432 bytes .../artemis/demanes/reconfiguration/Actuator.class | Bin 0 -> 176 bytes .../demanes/reconfiguration/ActuatorRegistry.class | Bin 0 -> 255 bytes .../demanes/reconfiguration/ORAMediator.class | Bin 0 -> 415 bytes .../demanes/reconfiguration/Observation.class | Bin 0 -> 340 bytes .../reconfiguration/ObservationProvider.class | Bin 0 -> 434 bytes .../artemis/demanes/reconfiguration/Observer.class | Bin 0 -> 181 bytes .../demanes/reconfiguration/ObserverRegistry.class | Bin 0 -> 255 bytes .../artemis/demanes/reconfiguration/Reason.class | Bin 0 -> 389 bytes .../artemis/demanes/reconfiguration/Reasoner.class | Bin 0 -> 369 bytes .../demanes/reconfiguration/TriggerPolicy.class | Bin 0 -> 330 bytes .../demanes/reconfiguration/Triggerable.class | Bin 0 -> 233 bytes licences/APGL-3.0 | 661 ++++++ licences/Apache-2.0 | 202 ++ licences/License | 24 + nbproject/private/private.xml | 14 + nbproject/project.xml | 88 + resources/CR_FDM_ND_v1.ini | 16 + resources/META-INF/MANIFEST.MF | 7 + resources/NDr_FDM_E_v1.ini | 16 + resources/reconfiguration.conf | 1 + src/eu/artemis/demanes/datatypes/ANES_BUNDLE.java | 49 + src/eu/artemis/demanes/datatypes/ANES_URN.java | 184 ++ .../demanes/datatypes/ANES_URN_Exception.java | 33 + .../exceptions/ActionInvocationException.java | 46 + .../demanes/exceptions/InexistentActionID.java | 40 + .../exceptions/InexistentObservationID.java | 40 + .../exceptions/NonExistentKeyException.java | 37 + .../exceptions/ObservationInvocationException.java | 47 + .../demanes/exceptions/TypedRequestException.java | 45 + .../impl/SunSPOT/SunSPOTPowerController.java | 368 ++++ .../impl/SunSPOT/common/DEMANESResources.java | 44 + .../demanes/impl/SunSPOT/common/Events.java | 36 + .../impl/SunSPOT/common/MediatorProperties.java | 31 + .../impl/SunSPOT/common/PTActionProperties.java | 31 + .../impl/SunSPOT/common/RadioProperties.java | 168 ++ .../impl/SunSPOT/common/ReasonerProperties.java | 52 + .../SunSPOT/common/ReconfigurationContext.java | 110 + .../demanes/impl/SunSPOT/common/SystemContext.java | 117 + .../impl/SunSPOT/common/SystemProperties.java | 103 + .../SunSPOT/common/TriggerPolicyProperties.java | 40 + .../communications/CommunicationManager.java | 201 ++ .../SunSPOT/communications/RemoteManagement.java | 89 + .../SunSPOT/communications/RoutingListener.java | 137 ++ .../impl/SunSPOT/datatypes/SunSPOTBundle.java | 155 ++ .../impl/SunSPOT/fuzzyReasoner/DefaultConfig.java | 57 + .../impl/SunSPOT/fuzzyReasoner/ERRORMSG.java | 60 + .../impl/SunSPOT/fuzzyReasoner/FuzzyDM.java | 109 + .../SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.java | 516 +++++ .../demanes/impl/SunSPOT/fuzzyReasoner/KEY.java | 49 + .../fuzzyReasoner/PowerScalingController.java | 445 ++++ .../PowerScalingControllerFactory.java | 56 + .../PowerScalingControllerFuzzyLogic.java | 374 ++++ .../PowerScalingControllerInterp1FDM.java | 518 +++++ .../impl/SunSPOT/fuzzyReasoner/Variable.java | 117 + .../reconfiguration/ORAMediatorForSunSPOT.java | 394 ++++ .../PowerScalingMonitor/PowerScalingMonitor.java | 755 +++++++ .../actions/PowerTransmissionActuator.java | 187 ++ .../reconfiguration/actions/ResetActuator.java | 37 + .../observations/BatteryLevelObservation.java | 100 + .../observations/NodeDegreeObservation.java | 113 + .../NodeDegreeObservationExtension.java | 40 + .../observations/ObservationException.java | 44 + .../observations/ObservationFactory.java | 56 + .../observations/ObservationFactoryException.java | 43 + .../observations/ObservationType.java | 130 ++ .../impl/SunSPOT/utils/LEDMarquee/Marquee.java | 276 +++ .../LEDMarquee/MarqueeAddMessageException.java | 49 + .../SunSPOT/utils/LEDMarquee/MarqueeMessage.java | 88 + .../demanes/impl/SunSPOT/utils/logging/Level.java | 179 ++ .../demanes/impl/SunSPOT/utils/logging/Logger.java | 402 ++++ .../utils/neighbordiscovery/NDPFactory.java | 56 + .../NeighborDiscoveryException.java | 42 + .../NeighborDiscoveryFactoryException.java | 43 + .../NeighborDiscoveryProtocol.java | 52 + .../neighbordiscovery/NeighborDiscoveryType.java | 113 + .../neighbordiscovery/NodeDegreeManagerV1.java | 348 +++ .../neighbordiscovery/NodeDegreeManagerV2.java | 355 +++ .../ondemand/OnDemandNeighborDiscovery.java | 251 +++ ...andNeighborDiscoveryCommunicationsListener.java | 163 ++ .../OnDemandNeighborDiscoveryListener.java | 36 + .../OnDemandNeighborDiscoveryRequester.java | 169 ++ .../ondemand/OnDemandNeighborTableManager.java | 197 ++ .../pdu/NeighborDiscoveryPDU.java | 191 ++ .../pdu/NeighborDiscoveryPDUException.java | 41 + src/eu/artemis/demanes/reconfiguration/Action.java | 103 + .../demanes/reconfiguration/ActionProvider.java | 99 + .../artemis/demanes/reconfiguration/Actuator.java | 58 + .../demanes/reconfiguration/ActuatorRegistry.java | 57 + .../demanes/reconfiguration/ORAMediator.java | 107 + .../demanes/reconfiguration/Observation.java | 102 + .../reconfiguration/ObservationProvider.java | 93 + .../artemis/demanes/reconfiguration/Observer.java | 62 + .../demanes/reconfiguration/ObserverRegistry.java | 59 + .../artemis/demanes/reconfiguration/Reasoner.java | 86 + .../demanes/reconfiguration/TriggerPolicy.java | 106 + .../demanes/reconfiguration/Triggerable.java | 49 + suite/META-INF/MANIFEST.MF | 13 + suite/PowerScalingSunSPOT_1.0.0.jar | Bin 0 -> 146620 bytes suite/image.suite | Bin 0 -> 135804 bytes suite/image.suite.metadata | Bin 0 -> 55944 bytes suite/image.sym | 210 ++ 587 files changed, 84683 insertions(+) create mode 100644 License create mode 100644 build.properties create mode 100644 build.xml create mode 100644 build/eu/artemis/demanes/datatypes/ANES_BUNDLE.class create mode 100644 build/eu/artemis/demanes/datatypes/ANES_URN.class create mode 100644 build/eu/artemis/demanes/datatypes/ANES_URN_Exception.class create mode 100644 build/eu/artemis/demanes/exceptions/ActionInvocationException.class create mode 100644 build/eu/artemis/demanes/exceptions/InexistentActionID.class create mode 100644 build/eu/artemis/demanes/exceptions/InexistentObservationID.class create mode 100644 build/eu/artemis/demanes/exceptions/NonExistentKeyException.class create mode 100644 build/eu/artemis/demanes/exceptions/ObservationInvocationException.class create mode 100644 build/eu/artemis/demanes/exceptions/TypedRequestException.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/common/Events.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/common/RadioProperties.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationContext.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/common/SystemContext.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager$RadiogramAddress.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/communications/RemoteManagement.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/communications/RoutingListener.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/DefaultConfig.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/ERRORMSG.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/KEY.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFactory.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFuzzyLogic.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerInterp1FDM.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Variable.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor$1.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor$ReasonObservation.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor$ReasonObservationValue.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator$1.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator$updatePowerTransmissionAction.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/ResetActuator.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/BatteryLevelObservation.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservation.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservationExtension.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationException.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationFactory.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationFactoryException.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationType.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee$1.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee$Engine.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeAddMessageException.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeMessage.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NDPFactory.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryException.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryFactoryException.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryProtocol.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryType.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NDInformation$1.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NDInformation$2.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NDInformation.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NDTimer.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NeighborsDiscoveryMgr.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2$NDInformation.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2$NDTimer.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2$NeighborsDiscoveryMgr.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery$1.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery$NDEngine.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryCommunicationsListener.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryListener.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryRequester.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborTableManager.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDU.class create mode 100644 build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDUException.class create mode 100644 build/eu/artemis/demanes/reconfiguration/Action.class create mode 100644 build/eu/artemis/demanes/reconfiguration/ActionProvider.class create mode 100644 build/eu/artemis/demanes/reconfiguration/Actuator.class create mode 100644 build/eu/artemis/demanes/reconfiguration/ActuatorRegistry.class create mode 100644 build/eu/artemis/demanes/reconfiguration/ORAMediator.class create mode 100644 build/eu/artemis/demanes/reconfiguration/Observation.class create mode 100644 build/eu/artemis/demanes/reconfiguration/ObservationProvider.class create mode 100644 build/eu/artemis/demanes/reconfiguration/Observer.class create mode 100644 build/eu/artemis/demanes/reconfiguration/ObserverRegistry.class create mode 100644 build/eu/artemis/demanes/reconfiguration/Reasoner.class create mode 100644 build/eu/artemis/demanes/reconfiguration/TriggerPolicy.class create mode 100644 build/eu/artemis/demanes/reconfiguration/Triggerable.class create mode 100644 doc/allclasses-frame.html create mode 100644 doc/allclasses-frame.html.mine create mode 100644 doc/allclasses-frame.html.r390 create mode 100644 doc/allclasses-frame.html.r409 create mode 100644 doc/allclasses-noframe.html create mode 100644 doc/constant-values.html create mode 100644 doc/constant-values.html.mine create mode 100644 doc/constant-values.html.r390 create mode 100644 doc/constant-values.html.r409 create mode 100644 doc/deprecated-list.html create mode 100644 doc/deprecated-list.html.mine create mode 100644 doc/deprecated-list.html.r390 create mode 100644 doc/deprecated-list.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/TesterForController.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/NDObservation.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/PowerScalingMonitor.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/TestControllerOuput.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/package-tree.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/Events.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/Events.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/Events.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/Events.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/RadioProperties.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/SystemContext.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/package-frame.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/package-frame.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/package-frame.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/package-summary.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/package-summary.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/package-summary.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/package-tree.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/package-tree.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/package-tree.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/common/package-tree.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationListener.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/communications/RoutingListener.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/communications/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/communications/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/communications/package-tree.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-frame.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-frame.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-frame.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-summary.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-summary.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-summary.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-tree.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-tree.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-tree.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-tree.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/DefaultConfig.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/ERRORMSG.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/KEY.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFactory.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFuzzyLogic.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerInterp1FDM.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Variable.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-frame.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-frame.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-frame.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-summary.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-summary.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-summary.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-tree.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-tree.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-tree.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-tree.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/package-frame.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/package-frame.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/package-frame.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/package-summary.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/package-summary.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/package-summary.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/package-tree.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/package-tree.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/package-tree.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/package-tree.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ActuatorControl.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/package-tree.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerTransmissionActuator.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/package-tree.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/BatteryLevelObservation.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservation.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservationExtension.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationFactory.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationType.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/package-tree.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-frame.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-frame.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-frame.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-summary.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-summary.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-summary.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-tree.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-tree.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-tree.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-tree.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/tests/TestController.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/tests/TestObserver.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/tests/TestReasoner.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/tests/TestTriggerPolicy.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/tests/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/tests/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/tests/package-tree.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeAddMessageException.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeMessage.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/package-tree.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/Marquee.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/MarqueeAddMessageException.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/MarqueeMessage.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/Switch.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/package-tree.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-frame.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-frame.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-frame.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-summary.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-summary.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-summary.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-tree.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-tree.html.mine create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-tree.html.r390 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-tree.html.r409 create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NDPFactory.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryException.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryFactoryException.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryProtocol.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryType.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryCommunicationsListener.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryListener.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryOriginal.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryRequester.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborTableManager.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/package-tree.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/package-tree.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDU.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDUException.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/package-frame.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/package-summary.html create mode 100644 doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/package-tree.html create mode 100644 doc/help-doc.html create mode 100644 doc/help-doc.html.mine create mode 100644 doc/help-doc.html.r390 create mode 100644 doc/help-doc.html.r409 create mode 100644 doc/index-all.html create mode 100644 doc/index-all.html.mine create mode 100644 doc/index-all.html.r390 create mode 100644 doc/index-all.html.r409 create mode 100644 doc/index.html create mode 100644 doc/index.html.mine create mode 100644 doc/index.html.r390 create mode 100644 doc/index.html.r409 create mode 100644 doc/overview-frame.html create mode 100644 doc/overview-frame.html.mine create mode 100644 doc/overview-frame.html.r390 create mode 100644 doc/overview-frame.html.r409 create mode 100644 doc/overview-summary.html create mode 100644 doc/overview-summary.html.mine create mode 100644 doc/overview-summary.html.r390 create mode 100644 doc/overview-summary.html.r409 create mode 100644 doc/overview-tree.html create mode 100644 doc/overview-tree.html.mine create mode 100644 doc/overview-tree.html.r390 create mode 100644 doc/overview-tree.html.r409 create mode 100644 doc/package-list create mode 100644 doc/resources/background.gif create mode 100644 doc/resources/tab.gif create mode 100644 doc/resources/titlebar.gif create mode 100644 doc/resources/titlebar_end.gif create mode 100644 doc/script.js create mode 100644 doc/serialized-form.html create mode 100644 doc/stylesheet.css create mode 100644 j2meclasses/eu/artemis/demanes/datatypes/ANES_BUNDLE.class create mode 100644 j2meclasses/eu/artemis/demanes/datatypes/ANES_URN.class create mode 100644 j2meclasses/eu/artemis/demanes/datatypes/ANES_URN_Exception.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/ActionInvocationException.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/InexistentActionID.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/InexistentObservationID.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/InvalidContentException.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/MissingArgumentAnnotationException.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/NonExistentKeyException.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/ObservationInvocationException.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/ParameterizationAccessorException.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/ParameterizationException.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/ParameterizationLinkException.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/ParameterizationURNException.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/ParameterizationValueTypeException.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/ReconfigurationAnnotationException.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/ReconfigurationAnnotationURNException.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/TaskLifeCycleException.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/TaskManagerException.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/TaskRegistryException.class create mode 100644 j2meclasses/eu/artemis/demanes/exceptions/TypedRequestException.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController$1.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/PowerScalingMonitor$1.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/PowerScalingMonitor.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/Events.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/RadioProperties.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationContext.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/SystemContext.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationListener.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager$RadiogramAddress.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager$Receiver.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/communications/RemoteManagement.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/communications/RoutingListener.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/deepSleepManagement/IDeepSleepAware.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/DefaultConfig.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/ERRORMSG.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/KEY.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFactory.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFuzzyLogic.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerInterp1FDM.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/TestFuzzyDM.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Variable.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PTAct.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor$1.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor$ReasonObservation.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor$ReasonObservationValue.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerTransmissionActuator$1.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerTransmissionActuator$updatePowerTransmissionAction.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerTransmissionActuator.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator$1.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator$updatePowerTransmissionAction.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/ResetActuator.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/BatteryLevelObservation.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservation.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservationExtension.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationException.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationFactory.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationFactoryException.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationType.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/tests/TestController.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/tests/TestObserver$TestObservation1.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/tests/TestObserver$TestObservation2.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/tests/TestObserver.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/tests/TestReasoner.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/tests/TestTriggerPolicy$1.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/tests/TestTriggerPolicy.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee$1.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee$Engine.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeAddMessageException.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeMessage.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/LEDArray.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/Marquee$1.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/Marquee$Engine.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/Marquee.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/MarqueeAddMessageException.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/MarqueeMessage.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/Switch.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NDPFactory.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryException.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryFactoryException.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryProtocol.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryType.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NDInformation$1.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NDInformation$2.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NDInformation.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NDTimer.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NeighborsDiscoveryMgr.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2$NDInformation.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2$NDTimer.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2$NeighborsDiscoveryMgr.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery$1.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery$NDEngine.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryCommunicationsListener.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryListener.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryOriginal$1.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryOriginal.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryRequester.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborTableManager.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDU.class create mode 100644 j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDUException.class create mode 100644 j2meclasses/eu/artemis/demanes/reconfiguration/Action.class create mode 100644 j2meclasses/eu/artemis/demanes/reconfiguration/ActionProvider.class create mode 100644 j2meclasses/eu/artemis/demanes/reconfiguration/Actuator.class create mode 100644 j2meclasses/eu/artemis/demanes/reconfiguration/ActuatorRegistry.class create mode 100644 j2meclasses/eu/artemis/demanes/reconfiguration/ORAMediator.class create mode 100644 j2meclasses/eu/artemis/demanes/reconfiguration/Observation.class create mode 100644 j2meclasses/eu/artemis/demanes/reconfiguration/ObservationProvider.class create mode 100644 j2meclasses/eu/artemis/demanes/reconfiguration/Observer.class create mode 100644 j2meclasses/eu/artemis/demanes/reconfiguration/ObserverRegistry.class create mode 100644 j2meclasses/eu/artemis/demanes/reconfiguration/Reason.class create mode 100644 j2meclasses/eu/artemis/demanes/reconfiguration/Reasoner.class create mode 100644 j2meclasses/eu/artemis/demanes/reconfiguration/TriggerPolicy.class create mode 100644 j2meclasses/eu/artemis/demanes/reconfiguration/Triggerable.class create mode 100644 licences/APGL-3.0 create mode 100644 licences/Apache-2.0 create mode 100644 licences/License create mode 100644 nbproject/private/private.xml create mode 100644 nbproject/project.xml create mode 100644 resources/CR_FDM_ND_v1.ini create mode 100644 resources/META-INF/MANIFEST.MF create mode 100644 resources/NDr_FDM_E_v1.ini create mode 100644 resources/reconfiguration.conf create mode 100644 src/eu/artemis/demanes/datatypes/ANES_BUNDLE.java create mode 100644 src/eu/artemis/demanes/datatypes/ANES_URN.java create mode 100644 src/eu/artemis/demanes/datatypes/ANES_URN_Exception.java create mode 100644 src/eu/artemis/demanes/exceptions/ActionInvocationException.java create mode 100644 src/eu/artemis/demanes/exceptions/InexistentActionID.java create mode 100644 src/eu/artemis/demanes/exceptions/InexistentObservationID.java create mode 100644 src/eu/artemis/demanes/exceptions/NonExistentKeyException.java create mode 100644 src/eu/artemis/demanes/exceptions/ObservationInvocationException.java create mode 100644 src/eu/artemis/demanes/exceptions/TypedRequestException.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/common/Events.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/common/RadioProperties.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationContext.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/common/SystemContext.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/communications/RemoteManagement.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/communications/RoutingListener.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/DefaultConfig.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/ERRORMSG.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/KEY.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFactory.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFuzzyLogic.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerInterp1FDM.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Variable.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/ResetActuator.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/BatteryLevelObservation.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservation.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservationExtension.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationException.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationFactory.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationFactoryException.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationType.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeAddMessageException.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeMessage.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NDPFactory.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryException.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryFactoryException.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryProtocol.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryType.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryCommunicationsListener.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryListener.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryRequester.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborTableManager.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDU.java create mode 100644 src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDUException.java create mode 100644 src/eu/artemis/demanes/reconfiguration/Action.java create mode 100644 src/eu/artemis/demanes/reconfiguration/ActionProvider.java create mode 100644 src/eu/artemis/demanes/reconfiguration/Actuator.java create mode 100644 src/eu/artemis/demanes/reconfiguration/ActuatorRegistry.java create mode 100644 src/eu/artemis/demanes/reconfiguration/ORAMediator.java create mode 100644 src/eu/artemis/demanes/reconfiguration/Observation.java create mode 100644 src/eu/artemis/demanes/reconfiguration/ObservationProvider.java create mode 100644 src/eu/artemis/demanes/reconfiguration/Observer.java create mode 100644 src/eu/artemis/demanes/reconfiguration/ObserverRegistry.java create mode 100644 src/eu/artemis/demanes/reconfiguration/Reasoner.java create mode 100644 src/eu/artemis/demanes/reconfiguration/TriggerPolicy.java create mode 100644 src/eu/artemis/demanes/reconfiguration/Triggerable.java create mode 100644 suite/META-INF/MANIFEST.MF create mode 100644 suite/PowerScalingSunSPOT_1.0.0.jar create mode 100644 suite/image.suite create mode 100644 suite/image.suite.metadata create mode 100644 suite/image.sym diff --git a/License b/License new file mode 100644 index 0000000..4e6f27d --- /dev/null +++ b/License @@ -0,0 +1,24 @@ +Copyright (C) 2013-2015 Universidad Politécnica de Madrid (UPM) +Some parts of this code are Copyright (C) 2013-2015 DEMANES + +Parts copyrighted by Universidad Politécnica de Madrid (UPM) are distributed +under a dual license scheme: + +- For academic uses: Licensed under GNU Affero General Public License as + published by the Free Software Foundation, either + version 3 of the License, or (at your option) any + later version. + + +- For any other use: Licensed under the Apache License, Version 2.0. + +Parts copyrighted by DEMANES are distributed under the Apache License, Version 2.0. + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +Terms for GNU Affero General Public License version 3 are detailed in the file +licenses/AGPL-3.0 + +Terms for Apache License version 2.0 are detailed in the file licenses/Apache-2.0 \ No newline at end of file diff --git a/build.properties b/build.properties new file mode 100644 index 0000000..9d6a9e9 --- /dev/null +++ b/build.properties @@ -0,0 +1,10 @@ +# Properties file for a Sun Spot Application +# +# build.properties +# +# This file is the default location for user properties that over-ride the +# defaults in ${sunspot.home}/default.properties. See that file for a full +# listing of the properties that may be set. This file is minimal and contains +# only those properties that a user would generally need to set right away. +# + diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..914320a --- /dev/null +++ b/build.xml @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0]]>
+
+
+ +
\ No newline at end of file diff --git a/build/eu/artemis/demanes/datatypes/ANES_BUNDLE.class b/build/eu/artemis/demanes/datatypes/ANES_BUNDLE.class new file mode 100644 index 0000000000000000000000000000000000000000..4eeb851fc3111f839d81e9434c06c68b288d52bd GIT binary patch literal 686 zcma))OHaZ;6ot=~#~}E?2kIYCX=3QY7#FO3)QtoaQ5SB^SSF;TOp%!y_-iiw0sbiC zS8F>HF8oA1oIbK0-(k52$K90=?RR0uggjI<)0RGo&3T{*C-7Z|s#dQvM^X{8R*eXiYNIRPr5j4!aa(o}=uX{vCLE>A6XaDWjhTR% zjf0dFMqrO{zEsZQNdo%>!PyUdMZ#gqG0FVtzJyFa=53Et z=*0-|YlP~u#k2dj=V=>+vlO?Q_v1Dr?F|ECmA3q?=EV_C z|M!h6Y2T~2SQ$HannD#2ia#oCN(m^UQV{4b35J4gDHPOto8Bf{lHIU-1Le(U zUvllaWcb4kpbdBI$}W3DZl;jV$WXKYJmxSzxW zGk-btadQp~ZDhVZ!x-&Pse0y$sCU;LDR`VQzu7ane=Gpl0Zjh0@s%538RmJwR ztEwU$#aU{ppH{gF2oRFa;*;(wL3;DHqh@QB73D3+l`<{qyjzgvMd{gQ9~t9XZD`V& z-YBT5w#hSrHGzcfldH|}4!0w7pKLGLj;%l5Q*Au8Nd%!|j$sya zeByT(+)7n?YQYuA4DZv~NR9!hM>Sa{!nO!+t*onp9v@+ZF?VHsdqJZ^fn-Vgr7+L2 zVFT7p!)@uw3h`*+Yi4k|Qq@nnsz_ZZDV`*%Qfp;ueQ0=OcWA`bZYUaoPVL^A%L|O~ zCPU2nH7Dy=U7c0ISXG`~Eh$fyv#yp|US;W1^KQ*6s2SUoyQiUvGe(gDL;Dht#h%J0 zP_$6O1jS8dUX0{s!N!<5U$^iU1_cIoN`0cXwx&Fm-n_E#5M=?u#Uv&yypM_n2d;$= z@L^=D8o+T};n=UmZoJr&YQ*v_ijxW#tvDl4aG$n|)t$R@wpP~?%}`?=jh z%;k)N2ih>t1!DJWD}L~8GnaUIHv-;Z&5rX69m7$az#w-gx$B_)DBf(@r;s*c;@LrT z<82J_&O6+_$CoTTx?e&pWj4|AB6xm^V^?r+7QZ=C6*PHjd{A zIM2K-1ddOJKuyO(%%jOY!I_3Z(h}^$3z6fiQCL>y4}VnJcjHtCY%Gi=)A&qd|Oxi-9A4 zB_c;AZziOqfv%%}3o%rN6Cj1kNJdBkm+^7*{&J88px?YtAFAVU$B#(Fe?`27TnP1~ z1**RZb)^XvQUm%zDg!_4f%A0>PG1w}YEz<96txjpfD@06#+bi>I$qrw+BYppYT)n{ zt_4*VtoB3{sHTlC^Ps`mR9 z`eRM{=l6DInylfB>xMJ4+|$`lboMiy{nFMM|3ae3vYbu%J52;zjKhNc*7CTs$#e?S h(c=qj5cAl2iDOF!U=y$J#Mo@XXh>dQhOavC$^Uy00Y(4- literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/datatypes/ANES_URN_Exception.class b/build/eu/artemis/demanes/datatypes/ANES_URN_Exception.class new file mode 100644 index 0000000000000000000000000000000000000000..0a009bd5a0200b419a93de6e06a249b882b7fdb8 GIT binary patch literal 479 zcmb7B%T5A85Ul2@xV}L2rcp152^-@PLt+e`HXKB`l3|(P7?>r?tkKW%MB>2@@S}{~ z3(-VQ&Y>SQ)zy`m&#(6n01Z@2$YEDPxrj;;dxXN3vBtFs+1go;kh_V7ny?)ht2@bL zpyPWr7&B51qEL-{DmKzD!JKWQ+NvvSJ4PPw}7w7dO>yH3CT z66&clk!=#HwctrTD}Su)$nUz?*ilmqP`Yd7icsoCNgV21BW?~>H5)SHA&-ItkKq5) z6ru9F_QxuYk>&T2lL3i5$0B!^oQZS3J_o&}*J~V0Oal&i`O^Eonq6;7CWnkwusSW5-wV-s7f!N0`Q8SH!m6qaLy literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/exceptions/ActionInvocationException.class b/build/eu/artemis/demanes/exceptions/ActionInvocationException.class new file mode 100644 index 0000000000000000000000000000000000000000..a8bf25094d6cf3a23de995d07c0d92728946f93a GIT binary patch literal 907 zcma)4U2hUW6g{_4KuT?;rE0Zx`=Nz`@MsK1qZN}HLKCqhzGwy*%2b#o!)&XGKg7S` z3r#dJ@y+<8f5>=8RE%AX+2nrZ?m1`9%%`t!-vcP36vt{3gewVnF0Z+;p1?*DGuU(u zhZ$Ur<60bBg!!Q~O7t4i43)3TwLIKy^??u9mkbC$aM+gfOS-*T@o3ie9 zVq!3mx=ko#f3sk$zMMNX8Xu_q$NFCLP`2#9))UqrV-gm#r(qc|6UN`b8r(YuKj>wo zFw6NYcTGq`FQmw20a+wre_1K#5FGXMYp literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/exceptions/InexistentActionID.class b/build/eu/artemis/demanes/exceptions/InexistentActionID.class new file mode 100644 index 0000000000000000000000000000000000000000..0f93c67ae961ffa966a5ca75d446cb576365e0f7 GIT binary patch literal 794 zcmaJAGX)vIs4MCplNBZb;lh=eG{2K^+P%eLKm*$a1jTK|QA zMT8U-{H{MroK2J>Im*J!&cnhtP1_GVw%Y z=LJF^dtDPLef%^zI+9Tt3%Enr=!A}#NN_k!1$GqYqcSIs8aQR##XW28 zm$3!cmedK4Qg(OgXoRH;4F~_0K*+jwzj-klNzIc#blVqcQ>o4R3^Y~G+xjp4MgLU# z=Cbsn38$QdWp|dA30Knk_ppf~A07Dm)=#L|5dA0mRb6(S*(#s++no8-2=VRJX^-mUc~ z=(8{W3|~@E@CW###JPzQq*1vrbLTK~=FBkPe|-4{Ungi!Sw zGVw)ZnSE3UzQf!1> z?k-pZ$G^agIaM*?(X0mYyeo%>rN(|;%X1YQsm(!$r#KT9uJ6?dDb*uv%_^UvkKnYz zB62&4@v)2wSil`Zxf#0QRE*2HDzKBeZrQ)&hsAyPso@hF+GXF4LhXmaeS z&~i^lUYC2yaOCl2hx=AkMc#g38kahH_ z(PAe766XKJ@5Lu492PKzr-W$%yF3!$3Zq-V8lDM-tBu=^P1olF*0GV)7YV!nH4S0r zw~Ajg%81ouuUXaav*{AH|F-zC`G@*tL3tYtZ-+2j-5jf{VHJ6K5RjKqhJ%OV3lgO; zDJQu{6va+U<_KxY0?S)pK*u*omD1P9JeRLDA?6y{8{|F@pe3=+pm-4#EMZ3C`5_py Sn3G7_NM>O`u_#drOFsd+^s_Ml literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/exceptions/ObservationInvocationException.class b/build/eu/artemis/demanes/exceptions/ObservationInvocationException.class new file mode 100644 index 0000000000000000000000000000000000000000..7a4c272e02e7441bdf2de98e2e12788b9f9c1a34 GIT binary patch literal 928 zcma)4-EI;=7(D|NkW#C()LL!bO0__deE^y^ikQ?8niNaol^I|tQ(>0O&Qg6DZ@u=0 zCN}W_y!KtZGkzl~jomb6lkYEI&N<(i{rcnc7XW3r32dam@E{4t=1m(OCXq{F9$U7d zFpozGJWgPn;g&D77X&UBnN6tIJTPc zGDHKd7`DS;Ld26BBq$qt14F9m1-c_%NUJ(`J$2dIz_2oNqiM8MC(nXjPv|smBhOH* zY3*s}tWSuJB>it`!?^_PoJrGn=maN?0*W^5kj7LRB|NbpWrp35clmFJ7?x%V|N2I@ z!V+LMjK76V*q1P0`8Ih2LJ#7 literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/exceptions/TypedRequestException.class b/build/eu/artemis/demanes/exceptions/TypedRequestException.class new file mode 100644 index 0000000000000000000000000000000000000000..ef65f826506de599f0ab2c07ae5185125bf9da52 GIT binary patch literal 1143 zcmbW0TT|0O6vzL|tsxeH3W$gjRA`~GQ4m4v_+Z5uoemFjnelN+4iKl^)MUfu8~N&k z;OLAWz^~wUaXcZlEf>cblgVCAcF*tp&)NO)>+5#_C6qI`YeL|jftjSAHIYZbz?^~k zWL`9J6}Ex<21+Iz6f<~`!9#(eh(cf1wkVAJKyAK$DInem3{(OYX{q#8x*s_n)up1yp+lD%nxl-IjiUy6Z|Or!kzV~{E(`SU z1hMjxzXHP-!eLoqx`&!;7XB@wB0CX@qFz_V5d&_Y2b^6hV6F#o=+Y}ckvnl|%%voU z0%Pq|uItcOyD#FM9SXA;!2;K4Q_*3ATuq*(S(}x`A|7S1l*MB#3yfQ&To$e=B+s@E z_DH4cIPKPfjI5UGQWh&%PTW4>h*rZe2rXY(E^B0{wVxE*(t*W?z|7#Oz~X<@LEu_j zPOCZs-GwB3eX`LY=Q>i_nFucJVB6>EX%oool3tT_&h1Fy;zr(L=pc0> zFnSq`qnSMC^-KvdjRC$k;QKRyK@4#}%(E`!_+u(YxgBGRLN~vFJ^u~j-3hvK-N)!D z9;27LTpu@fbDZJvF^m)Re>(Maom-Q=0plp*Cbxi<`oaySCXdbbNhT$uTRckHx0`Ig o$Q|0yePu!UR;AWO7Us@y$Ao` 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 NpZef0d3E8h{sf}xPjLVM literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.class b/build/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.class new file mode 100644 index 0000000000000000000000000000000000000000..84ea1aabf80782abdf267b3df1ec5e1cb139f79c GIT binary patch literal 873 zcmbV~&u-H|5XQf4)5fGJEosAl3Iz@YskOufVGvSC!UdB=v5CYf+BmCpD|@%vU6<$L zgv5ad;Gqx`D^hI)QpII$q3P{W=~n?7j)UNdZWwX%*YH{oe6JRH!|L9hDM!$XFxQQS#Zxja0gu-M4O zLYT4OwoveJ$k48Mi=-s(;W0zA*AL^)v^$=D=zsR`gkkfIRMNd=SU-9;VW@TWTrli} zQi(yH&4h{hEG17X)Co@~+{h)boHchUEyJr&XTFNPQ7=X37FNPnT`8m=sL&C-HgL8LO+e~6Sn zQHd`Wfx(-L)bVLzaELWpS6~x&P{Rgj8HmB~ulItaRLXrb1sO zdd;_D$v*2;K)RGkl~{^&D(4g_L#fo!ODMg}c#o5*oW)TT8#!8$u_@cCd2yD^=s~YX z*Ee!+ZNGsU>H^pQ8Ys~IIeii=X=VkwSz`KIGkwYz_XB0E%W;@*6gdB*#_$7%v`C2Z zB6LyUhlBAHC6vK0%UPAV^Na6rh7UuXvB4EG=Ro=D4dOL#X);z=2F|d{*vR8DT4*y9 J*kdf9^9?B=cS`^O literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.class b/build/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.class new file mode 100644 index 0000000000000000000000000000000000000000..61899bf56eb0d557702e7f019fcba9c7c1a07f71 GIT binary patch literal 477 zcmbVIO-sW-6rAn1wbfb`5sKhVJ#^1f5o)bih$b{?z*E^IOWl&}mSofa|wa?<5H*iEyyAe|8TY~b%rB6^9sfZKoTSD^Z zJPCN}u^=`|*HR&ieU^%XZ^ep!6&b<6;yGoh=84E?#1kfYMn$rUshdmJu{|29BvFz+ z@klVOQYTd_o@&7}6RPQ|JPrASD9)Vxwe*WeT4-R0;QHT(2s*!o*uj#AnxL0#1NHM& z#59jZrUU-U*1|->IZCE-fZ!ArRL!gzRzlruq{w5iX%xEQK=tY!B6#tp9=cwoB1q9wu%QVBPqIyyx+U2yn~nd=liwrhEP8{pAi~kyHJGPP#g77=5yr|InP)bgf^AgOgdfh zAF<(|bwL<~sua?BmFq$*R4$DwgwEHQh)WYklSHI8&#e(ra+`W>P2}uaIj>d0PjzEk zx>Vik%I4_r$*>9%po1;K)xV7h{og_+^OZ_HXXeguiW>I_5RTD6lV^)r4Q<}2vSsYD iA~qaoUc7-`Hz(VSEtY{31dPFEZ=#1CW?Um<4gGHd)oJ7a literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/common/RadioProperties.class b/build/eu/artemis/demanes/impl/SunSPOT/common/RadioProperties.class new file mode 100644 index 0000000000000000000000000000000000000000..ef7930f3f401231084385e942d389c9da1e0acbb GIT binary patch literal 2658 zcmcguOK%%h6#lO5c>I_o6XyX)nMiYd3h-1mttG3Lt=09WT-EBTp*3Z_-l)mN zmQl&@vmEW$PL*C9$a4S#?>jx9UWH+Nf&FR75g8Mq~;Vmw7LW>ikPo zoKibEUCFeQ6l~ap(CvOxZ4a?acaeL^?-b!R)j2k86?Ws@#7;fly1g?6y1ii7k@OK; zv@P9OoEY=D*0~NW?`7D2`-hxq&zdcxIbxfdxAB?cxdP@y9LGV1tsN+*nmaaS*wP8fnNHBOcGj)TvP?_FJWhz%hLhZE z7cqzd5&aktP!e$pr$ubRy$t)PzbVpYifc2qfi_bcXj8-i92D@3h%4&w|5{+kFHqz(zn!a1#Clm0s{hZPdzS<}j?bz(h6TFGk7CfzS;LDJv! zcE<)cQU_hHVIs;sdAGxT02q46rL^ou%g&n@ zHH)OsNAE2V#xNHH&4#%$XxxM$+(i%C-82u-Y7>3wtVd|Q*|)w25w0JK-%9a7oMt35 zviH$SrjgOuweuRn@6jZHQL%U zXukku4ms7tshW{hM0q*R$T6L>x%HH&o>TM_b;dy*ax*wzl}XjC*{}) z2Rll@K?jyBdHvmdgAm^&rM~S$On8V9{sdAqS1hlVYb3FA73|&2M+la7y^qi}bbaFN z6haq$_uqj_?Y@Kw{}2wl6_K7N2xlw(fiBq5^$W%N5psMtrJ;{wrJ!^}DTSmjlv0=U zrBVt@UnwO)`dTSPq;Hgx6qddvD@fmwjY!{a|jY&U}jY~g~6{VYGyQQDW_DH{w z?UjBdD@nhR?UQ~dn~?q>+b`WBI}ji<7*wtzBK7~jC0vETpAc7b{QpLf`d*}GgW+MC H2XO39)4x!_ literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.class b/build/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.class new file mode 100644 index 0000000000000000000000000000000000000000..b46ac0bcd7681e5e4ce9d7d56a7436c130390add GIT binary patch literal 1102 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 literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/common/SystemContext.class b/build/eu/artemis/demanes/impl/SunSPOT/common/SystemContext.class new file mode 100644 index 0000000000000000000000000000000000000000..673739db81a11023781a45c9a605fbf2fe201c8a GIT binary patch literal 3110 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 literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.class b/build/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.class new file mode 100644 index 0000000000000000000000000000000000000000..133b080feb9df71cc27c7fc20943334745bfecec GIT binary patch literal 775 zcmbu7&u-H|5XQevlO}|ewt)hL7ATazhwKA@Dxx%07OrF2Rs^SLvYdZ}!*kA3p)~@Uo2!95(T&iN_54QQ(}N4TFi}MZ;j+ zcPD-@@`pk6nW5`mifh3Wp=UfSjMB5W3|oUt=Y`P4SR|!v;R(a`$IzL0r>n{qjz}co z-0>{&DT#w%a^C-BiO-he+RbBzz0;u^^{cMyO`flgs#a@NFBmr8DXoeVhK*OR#|-sB zb|GnitF-jWbSh0GrU@xsH;Y9w7DiRP6zjzol{36|WyyspWU6w0Ayc7c&Q*Gq@UYaO zKZ*lWYlaXjh`hd{_30TN}58+oIGlWS!rVVK~=L3{&BBYncKk~>@l4D-$;g? zzndCOFJ)YiL>sH#*HgNX=2|3V&tg%OEPSP8v5;lrcnlre_!Tb9#t~}td4MMNQAYz* zM^u}0%i9#X8~;12?ztvmn# literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager$RadiogramAddress.class b/build/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager$RadiogramAddress.class new file mode 100644 index 0000000000000000000000000000000000000000..94400fc2ee746633f8f142b9926535b49f5bbe45 GIT binary patch literal 1524 zcmb_cT~8B16g}II-F8_OE8qtzsHoeb3?L|phJ@4_N~#b`cx{GuQiimU>9dAtb4U10whvmY z+HtB|o7=4Jw%Z*?)_EXZ$7jWO`kXtwDZIxTveh?EuqOgpC-NuKk-@5lb$cl6`5o%L z=r)9ga~0``7oGO5@V5DGi*|Aqx6WHT+>F3O+iU-Qu*!}jykd*{ zzMzVoVKg|?e+>CC+7v-_=$c<~ou-DQou?t>;xDR!C)KMlJ73x7uQ+RQr^&jzL}L0q z5^})aP)3Z~rz_Qd?({azpAOp!hfasn*bO4=<|(_ZP-fNbcy;kiDl0D!n(dtG%fcuY zES$kv3t5;37A-u$l7(eFv@in8z#|RYL%2$(yd*16oY~yn7j?SAq=uSbpsUIJj>G%| zH(*i-QCpc`tSv0pmTI1wJnICq#mc2psW<S1C#;FX@?6R)elP#h@yX|K};sQM5!=33{4^@6ZafM@W37EP)HO z>Qn=~#Tczt7@HW!CCX^JxDqiis#bOB!Z##8QxFHgi-FTU@FcEA;Kc}>QQ%{w4*T%$ zWB5!De+}0o{3^*!5=Jjf9U*zrx=Fmi2c+>aWS9tZJz`MOltuLS!Zl1qTx+3qK(;V@ zjPwAyFXZoGj4s=w%M#smNOuD_BRUr5U0?K1eY%cgx=wt#g_#JvO8qJYdSUVidcUq; dr0aLAk+?23a*eRJ!xQh|B0ZH-gZ}dqz&}q0OfLWc literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager.class b/build/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager.class new file mode 100644 index 0000000000000000000000000000000000000000..d38e72f0c80b94c8409ac445919c2de0c85fdfcf GIT binary patch literal 3897 zcmcInU2q#$75=Uzd*$^yaosvWG;Z9wv~uiZ6E}aA-B4S0v4U(lvh3E0sk4^W&N|v% zvs%S=fd0@zfA}d-{wWm7Pk;s}eNYoRQ~JaMZ@lozD>HrJjTwev`0nZ_YHc&kOt8kg z=bU@ax!<|x+;i{#`9FVn2f!h`q2hkbs<;nx3LaGv!fXVO$@jd9Zk(0WIr&&n@hLp6 zV6hEtI4>WDf~5#@QY{~WsbUwFRjlBGq%5hiDjydW6jbbmt-xu8i?s+ot-?c5fiG=K zDlTDNJ~mWr;BWOjaWDxH}eNeSGRoSaT)vLjQ8@w%*K*m5lYlt3ufHzyEI zxOtPdDa$dZO7@cJWsRi*C7mfZXB6fP&ysvq81^q%jA%S%mUP4OP1`E!dDAu=v#4A4 zT0x&FIWyDgte$giyX06o!?zfzo@itz4aZn9y&+CsG@ZP_$yjRDxMb*-tB-E_=7{GR zo9U9jR`O?j&ou0zWU``AFq{>gGRs+^tnaKqler<#RX0zj$2W53nw*sG52Xl0FP0p= zxaRu0T`Kt21$RyNWXALgqG)&`+z@85#e6+N@YGUi3s=$$(_QNjJ2w1~Qc%Chbc)x}d z3cjx48+cj6H}NeE58>MyzJn72x7W6B!~WCoT{$$cJ%nJAEn85*_cVMTKM>e^@ZiCo zDYwUyTeN4{Ejjrf-;MVuctyhx@gsrkEoeboDpIEORRurR@DseI;iveSf}d;n1+HlL zC4MC(zgFlI$gPQ{BTO#ad9! zY%nI*qPte2+xBx#=)3h1MilEiH!9G)&VJ1v&>TBADi6!vN`(Idh16=!72G1NcC+C- zJi?6J#jIz@R^O22nav`PPv(dP-gtsdS8Re~uVG^~h?(KQae+(TwcU~v!bI#=w96qG zO(W*ubCLQ18B|sjFhF3Jn z?hp-KE6iY}qUBt~v?s>Xe@jiX1m559EYma>PaYmzJaTOD=whYilzgk8C&$Of>)pP^ zcT=vjvcvSJc|ddex^_5rx^E75^KyDW?_w>8;sE-2c^i;7GaMv;sDanXA8z1}kRNQ| zA0U6UftU8j-p7aNo5u{FCpm-8x8S?^z*`W%52k#O&z3+qgg9xfqJSX`ljDs7r}(6C z=oqieyC~WeapgcXTt-v8wfl7{@$Y5+Hw6@MhHrV%-1jy@^KT*C*<40Tw6zSSj7S-+ z*PyaPr>u7JnyVw}I<@kf7hp{Y9VMQc3KEd%cWf_iVIX+K%f$|*XtE6qpUCMpZ>-^Y~#rhgLI9D@1 zj)&34nYu}hK&AhROr`f4m90~5m1>v8TrG4-jUpk7pVS!l5X+g=I4Kr0sYkdX;eeW; ztT~{Pq*@RXmv9=Ngo3kTKT?=PglHVDWg4yY$Qxc|3*j>DFE9A{EdT%j literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/communications/RemoteManagement.class b/build/eu/artemis/demanes/impl/SunSPOT/communications/RemoteManagement.class new file mode 100644 index 0000000000000000000000000000000000000000..5571bc119a441a062b2977d858e36bf762073a2a GIT binary patch literal 3252 zcmbtW>30)V6#u<8?M%`E+CXa~AVIcnbSxl3*eshC)4hOz3)AE^osyXev$O?q-*?3Y zLB$Ql4Lu$u6!CcY=JLhA#6Q4uJmP(mG@-P$aQt#--kW!S_uk)K-u(X0k3R!w#$we(`odY~Ls0{t!awmhpgiJ}AUNA+!+sk&uwAKoz(U z0}@gp%)_8q=;Ccih(i+6Aw*!vFhj7Ak#Jas9l}C5LbyVB;>55JBSMVII3nYy@Z}*H z$7DP#;Sm{+3jN0#_q+YD>t+*38%<%aI4Np5H+cU0ZTq}5)}?Ct98 zQ$1HtJE}OZn<+K!>uq3&*gRpG1A5A{HCMOHF5Aj*+tsW)yY_{ny_r{ z!>GkWgivl98OwGVSQ{-i>Za~)W>{W#9m@547y{d@Bxjft*G=Bx8U5Vu)B4l26OLO6 zExkvxb+OKG2HZiNJZqgXT=LxTOg-TT<)}T}uw34*nOce)+;qwBQ0A&oOKs0&D6JD7 zmATd-POETyNE_DFv_^dOx;D{9T5?|N2%Q_&(jGY~8QgIQm!agqR)(64W@`p_xvd}d zt><(ZDhnT+K4F34SXLzIu&0e2%F&xs@XzQ+xlL9}_$Whl&L7=U+d6lQCU{2VO9Vm* zGT8K_7Mv^R>y@>J1EtR+v?YAf~D@1+U^YAzl|q$0fX>;7z>6uwg=N-xyB{-o^<9 z@8Bdu%MIfwIEF0>PT^ez?+Kjuahj^*+IR#>w7;~6C%8V$lhH!?X~ z)UyS5rY|UJ)h2=dv4T%Nwem9ELo=7d&HpuOYP$FQNjwQxSN}!4D0IZXB zOyH`bOKpVgk8|0z#-~PgU0eNBgJ^Lf(bLUlh6?g9KdWh8t*e`iGkIr9V=~pA!^u7B z=qXU@#pKsA8Ez&i*HaysWGC0HG%n^(6<^`&JmR&;Phko#5__Ynp(kvMCv`FU#DvRF zGK;1_fUYqbhij*GW?JpsP^~2D+O<*L@QgS&Q|_RDJ5ZbzCLh_Zxtf@v)NbS6Plg*m zL@`Qq$%-Bp=lyX0c(knbJi@H|Ktzn^8Bv$uKc@xegR$=w_0Sb`Fp~L>@63bi97Y zzh7yp*R@Su?&aw`9~Crh{!dL8{TR_~lO`M%(|=ww7*v!ZEG{GZNeqkoh@K_lvhkl( zOSpqht)o>p?U&HAs^J1y!x&1=qqL#%JObbON7s`KBS5l|WD_dLKqZ-o(N0ZH5gV|P zRs?}fWQZm*He*W;o{$3w0<5;7;Rgi5WmWiX4CPr!W021y$l{H^AbJU*eHTy>R-)Rcf;Z~95@Xj+*??IlF^t-OGn zV*x@a9Y>r`h>-vZ!pma8B`n+*350LCfJL#gNLd!qli=dH_%b4~@<@4Uq`Weg#jRN^ ziAfRK@K=F@5psE{*p#nEUnbBc65-|IO)l6Gu|_1Zv10GpD<{P=ToxtnuVz-@m?L#XLU@Hz{8-}ohemm~Q zar$}+yKn~g;CsaJE1mok9rz2K_#53!#%{9E%M|pnYV7v2H$XrBXXyP-!Ye1OorKv6 ziF8{CxfL>5Ifw0Jp_J^Lrthtk%i|cvU1YJ0u!3ZD7k#Dd=4+sqfjo#)Ol|mseCVK< K82KQIuj^lTLXdU< literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/communications/RoutingListener.class b/build/eu/artemis/demanes/impl/SunSPOT/communications/RoutingListener.class new file mode 100644 index 0000000000000000000000000000000000000000..d8602c8d581a5c88aab0c8f1405fb8cb68cabbd8 GIT binary patch literal 2946 zcmb_dZC4XV6n+K>n=I=~samyFW8VzcvVz!BMG7PfghmMoYHX{xB$Ke1?8Mz!gti~r z{_*FpzXRyU4?50bOvgATQaFRG zjvOo{O{!%|snbfzt1B}pe1(FB+d6tMmc$*k&*~^*E{ReSPrC5FL5RkTb$a8180q*)anH$Co)z^iiKl%DPS zwV=v9-z-?UtY`}FW`t1OLeNWAskE)+#^=Yklt{RXQuBSLswSRIK#1m|P&&kA4Zxd^ftK_*rDk(eNKg>5K@C0^yu3a`;+I*z?+P1~2# zq8;5S?%XjH%8q)(71F7%O$zUs?Gc2EJHpmnz8WDUN2<-ZzIr+A*QBGWdE%7{^e@{h zwt@HYfd<+aQ8jQ5=QY#}aMTT4zUB@6xH@mpZtJLGsT|?0d zn$jUcn4Vp8gxOm1+NR@5?$vEIB>BQzsc5Yb!L~@p(Em>W`J657R}6*@lZ9~2@*45F zl@;WEl>*fpT;8_5rvazVk7W7|oE936W;n~Sl^O3eC&LGYu%9i%(M6)-lkuu_RvfuD zz;HeD@817)aOnaqEx z)ZRE07q0HA!Xf@l)Uf;0`FV@>sgh;gp&w7lqSv}>qHx!uckK-QbUW}a-a{8j^aj$u z_^f*V!ku2gaHsc=_7s?UGHLygG?R8ld*bp7uwO{%z(=%phleIUCfSHC;1V*VG4$aw zt;+Z@-A>Z3zeLA6Iycd^gP_wl;0C$78KMj!p>D<~O8Nv>LS!AElGGV~?WcgEdsi_K zMlraLx5R6_O_H~%H}ZB3Lvd~eia(4b%&q%1-iqXHF7%d;qmL@|y4+~e@L7z!Ovw7* ztERnLwTFcKC`2Bm8XR1;V<)l~ho&_dNONgjvy@k{mF<9C_-KKY;gezAWg_xP3M zH#l@9ZxEv*{%um$Day7I_9#g`+7h&vNUcNv4LuKD!00`)iKC|yFL8|a-s4K43!(BB zDHme7m*k6)yot9rabl-0y);~IJJSqI^Nkp_c~5*AgO|2;ZR0FTp~(jXej$A5H*OS J^t}UL{sl*Qnb!aS literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.class b/build/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.class new file mode 100644 index 0000000000000000000000000000000000000000..ad983a6f14384a21098667ddaab65cd2d71c85ad GIT binary patch literal 2113 zcma)7ZExFD7(F-5OY4}mbgVESkg=^x(yksGd+j#5W*L)6Ga%hi5fXBetIor9vc#^| zN&Eni_`o;%ANFBL&`L~V-}zB!=h}|rHXfR)IQI4PoO7OY&rSdR@9%#AEa9$(8Jx@E zQw=Gco5D2CYrI@gkDsZ_MOAP~T`uQvMT3T`Ib74AV_Chvp2LkCZszd0z*Ng~I<{Oh zdjiMmkIZe;@LbC_?wW&#uGzBXvOxB_;fva`t8D`&=Th_qn$Su>61H;pH#(+kx;s5C zhbybTGV*8IcGn^PVyT>jGHSfls5O6Bz2CT9udyxP?mDh%IfF0d4u>lR)7hr8X*Auw z@D#(rJD>@j#b}lJ(6vgqP5zS zw(Pl9*P&^b-$+0bOpdJUG*jSo0!ExUn1VWc9(A5cs2;~xDadS_w&!oU9~$4*(G<KdOX^g{{FQl9QhEukDr{XX=jIFdRY)ACw-ex{CJ z7|CB__7o%jVuC#tEQE1bBd4+_?-OzNk9<2yxcUbU{7#v>vC;AobUqp_&vS5=)q>|h HMca4<7VgQ= literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/DefaultConfig.class b/build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/DefaultConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..195bdaf6da1ff6cb81715cbfffb45a119def2151 GIT binary patch literal 1081 zcmbtT+fEZv6kVq+^iV3r@s2kTfwn*o1r(%Q#1fOn+BUXwc``#e)I-{tW-cb+2lxT{ zA)2Tpn)m^Jjvrv$Gi`<%A2ji0&suBtS=npPneRWpd;^d{K86t_qe#UNLUI7tkmi`? znDO{5M}|Xi%yDEn<~bHP7CG*5+~-*0Smt=ZvBHt#SmjvbSdU^OiiZq?2l7yNn@+_t z+YIByy4e!8YY4k-I-+h`Qn-$43h%YF93|}>L;tEWl(WtdPNudQB6;&bG9-%1kR`XZ zFRhxs-y}sVnsvRoty{|DT`}UkR5rs}QMy969NAK~IFK#fkhV~*c2iVcqgpA~#G!j~ za{Nr{wrNO9Y<0%Wo5rDP&b@^ENqy6TWInrP0aoof$hOxhH zAdc&}!7xBs3r5>@C=JWTv57|vF%rwJ(@~=oy|DEnOYe87pIGgnUMh=sL`k!(NXA@o@Qh?aYD%-;K@^^d_sA%J3&6p8JngGYosn5l!7_ zi1PlCtUGjR?9TG(MjSINCyQq-RmW0BBloA0>XAA=IgHUg9-;e9@w}Z93K62uK=n4U z9|#iy-lb2$(q9qUJ4N^tBI%EaXnk7$XGC{=%zN;F77O%2Egs-=+E9QK+Hio+Yg&LW zXcq%~si*&PPyZF|s@L+jJShwVvL+7y7>h?z5IP%$oB+77^T|pi%UI+`+~!he%I75g-7-e literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/ERRORMSG.class b/build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/ERRORMSG.class new file mode 100644 index 0000000000000000000000000000000000000000..1e8dfbed14307d33ffc9beba936f521faa7b4cc6 GIT binary patch literal 2148 zcmbVNZFAd15Z+6iSauy+(xh!l3D*K8FEpYwq@@I?Bg?HCS@KA>8TjJ4*k?yYK6&&~ zCjC`VW?+U7`~ZFw!%BYX<)t&YU!;3(cON~ww|n~M-@pC_fE}n6ArB7<^v~|a^otpcUz_R&*y=1D-L|=8|&=Y-hTBzuzQA1}f5K+uT z++u#h71$?mNwcl0@w8nvOkII*30#vl+K2j&RQEguq?dUbhXa;kF(7hxRkQT+yA>cg$5Luy%p3W}D5LrN9A!+ZUM6 zeo-TE=WT9oyJ@+$)6h{_1#9N$W!JV03(L^7w1#2hXLJH9t+Hd34@|vnR3v>>0;^L? zR{3^W({vYWga@#=?+Gu)V$E-Cwg}|3pvwtdHa)?uWN^g820QX`XW0xo%x|&KOYwL! z7aw~Ofk!4!R2Ig3;6-Ye518PQ>J5gz>L$Xi+YPmsyn1!wa25rEhw9|`@u)9FJl4Z7 z2(xZj-8kP4sVZgU67>lbvt=DSB}SQj9-AzZ7*;km&r=}5e#al@S#*OW?C`3WX0yNWvwJcd zS$!0GLPZeMUXX|`0c|#li5^syaO4Q-&-{eIPw&Qp;ZrH}n6oYqGtOav9THI%h78G_ z*~sfsFg<1w#m0`()9D0$G7z-OVn*O_Hqz61dxD;pXwJsg6j6W^*QKK}o};^Q0o}NN zci(2hW|<5)H7fKMOnh2fobvw}=8d9Qr^B&m+2tWMzIzhkJ%NpnV(?-b4XYQZ*+k9h?gY%9^%UqzJmCD z2`?kQD&ZBxs}jD3__~B|AYPO3O++6^_!i<1CA^OKBMDQ)whzGk{WZcdy3$5 z3{DB|O$qkUGbK=7!~E7CkUPt5Cxq%mT>6KKKX%wPov-i_$Y+WcS-=! zc(m);+1a%}zurFp9AdAI?K*ZCYN-albgX;G;5 z7+Rh=bk_F`)P|`F84fC6sgNV?O(k;FD`i4vc=trH?R9S%HvVDui;KCjc<>&^{3%!2 z`l(ksD!oT!88&~JKN059io2A&^@Xvz3Cu?%;%^wQ-6$zsx zXYz-6oiT&=K;wGg)}-a0mXAHQUOPGRdCjKHp+ literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.class b/build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.class new file mode 100644 index 0000000000000000000000000000000000000000..0e2dedeffab6f4ea26bf52a3e140d2fc72920ebc GIT binary patch literal 9873 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 xGEFL3Byr?8p;=jzbSSP8J92EK^sQJS zvETuCD8!j0rNffV(f|FLb9^rT_4~(902RC`AdRPaZ0E7Vu-@u6Khz!1KJ=_syX$rs z%8gU;RTv`?oEV)r@`IDN466rWFpWhJ_rxfX9J>q~7pZpFRk<9`7;-(+@vIuh9s^g} z?YHY3&l&QHnpTUWat`JZhw)DrZQE+8N-r2n3++%*0>(DZ_q4CWeS&IrgW!|E@?Yxj2?RIF-Yg_CYgP!6b>P%K~XTi5HNi zNvxXMy@=e|ggVHPqKhnrd9+Awhkl@viwj{!k(e>0_O=+9M?xi}X_u%XML!cz!X`4v zg6a^ZkSFFEuMihBE)thCUM0Sy@fz{E#v86Uh;M6r thdO8K1{Akw0%OiVcK18jxA{o-DdxxqJ$pd0G}l=?#3Lex#}rd|@&`m5rcnR@ literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.class b/build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.class new file mode 100644 index 0000000000000000000000000000000000000000..e46e6b36fd9c29bc73824fe6f1a7629f789de1c2 GIT binary patch literal 12595 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 literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFactory.class b/build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..c6ed41f1b1c2a7d9886f63258a72f79687d0d0a1 GIT binary patch literal 1244 zcmb_c-A)rh7(G)8Tb3e-;6L&!w)~AmV~iMYAWeuZG`1npyI~p1knK#Jot40Ic;j2> zjU<}*06vuQo0diriNU11$;^CbXU;h@-#7d7*S8-4R>4CIV=9N~5Hpw!Fc%_=`5Ybw zSO^jL;iCYB5FzFR6ay?W47^lYxmOH*h2kzlcEjvThLN(;ayxDANn00tF(G4R6Nz|N zSmon$FzXIg!cZy8lnd)*Qzd*~Hiec6SIt(;YpJePck28gJv}{nBSm7gw7hDLrL7U2 z(v1zHoi%YRZAnDV*pqdJp@wu@I&nfrq`Y4!ABhiw$3i!F%~@KsUXDzYC#mL1%Qzkx zD|zZv%&XS4q;*Or>&44VSs599pc<(aP8rR+mPj;vd?=jX=U-wB{Vn39jm}*`myXoR zB#nt{kHH{KxLQ9d z`TUhlLq!bRz2Lq`NCI2hN!wc6ENxbLByi5yCVbr!$DQ(I82wWqJ9|emqC{VSIt5CQ ze4mOq*=lGi&JB@JMkg*Q6BJGE`aqOsg~SinGX3yF}3nhUkAZj>nk98W!+`Og_bPJZrm|?kM6GZqt0y#vR-x SKN*^F5BJ;Kn)^z-S1V1SpE)WO9-WNoL}i83bBu zyVdHpm7=y@XlwUcbk}NeHNmo5ZR^%uw->kDy4I~*+qG5O+I837ZFS%OTxN#h3=^Jb zc^>Bf=D&Qm|GWL)f*x{Pmv8@C_aRrN&p($B%V!>G-*hJ9WIFzWqYSf9tqQ$D8Wg|LFK%9dGIQrNZ+o9luuN zZ*=@t$M1CfUdP)y{-EQJI^NOot}f(ntw@z=3ywQ4*^ zmven`o-PY?2~j9n=#%sPxJs$uZgpT$m0Tbf>aw^>mPnm0OMOzWOM@T%(&&>WU7Gzc zq_OhSmw6-nSNY`2)=1z@7kJJAE_H$RGwm5&!n$0fBv_`)a>dUIzpRvtby=l&SYxa3&oe4Ri0fVW#6oiX^p>4uP}_^pOE$G#%|GsHqR>6qJwb zQ6PtnJ%Y;7RaWotYU zPp=a!uA2g%OLvfqjmZH+P~8 zhDW31!9KAmX^utH9s6U(xVizdRGuD=Q(4o|8HXc*Ls(YZG4=4_EjP#~Wp5glJl#!+dWKOz2D!0yyl@g|-^rJ<` z1#^hh!z=_XQ$p);w8g@mByJx$w+*1IPEA%A`;0_du*8eufoM9KJ}^$J-_YIByJve( zH$|@47ah%5H&fqiDs9bG%3665I*uldRV{M5;&Q?ze z$}(nx-q@c>3@Bf!_d-=5PuuqH_O1@9uWVEM7J5)!`%-dV#=GSW4;g7C2Q7s0Lz2uX zS$)yXW|*18HZwjJHR&eGrpoI&E&DQ-Wurre;7so8Rnc-FZ)dwgsTs@3Zafh)x4VF% zSJB2*?)c4&Zhi5-iA3@(g+m61g3AG-}HX z4ywQ&DMqbt*a%s^8yZZSArg+KLWyKL6b%g|GYqi=8PT?IfvF892SJy4!OErC0g_IE*_4ty81Q)2_gYP&|<~mHZG z98KJ*gq$Kd>!?dGtKm}QHumI^yX%a|@u&y6Xff$FC?%xQ(L~G$B?m*^+d{+9RH)xD z5}{Nk7Bf<*!OZCB0q0;k9!=9d1S`D{M?$%z8j7Zwc=|JGBSlARZ(3*B+IB{PMp|Oi zI%RpxMge|vjH8KVh0d?6TC$)z$mp?@G&{U$HhbmcNXQPJu4+w7QIv#u`pyhbA{4di zy&S5nhD>8fB`DKUNmp^SdHIM%oK-bOLV1%p)ap8IF0VdAbiCYTuCB~s^k%k+=_BIQ zw~^RbieNI5cRtc**9>;y6p)?r9-r(A$W?MRe-`Ge#;V6sk$yT% z7va$kRi6dq8o8GF$75rH1$DbIWEzIGldqN{wvuIlY_sGY2q`YCd|(IuJ%a6}j=E)F zbIdg8{Gq`pbM!#yhG9mCOo}CO$YLTDG7_0F8+nQX=4CS{Z}zgVG_pyP)=`QwgRz~v z+-ym-drKWsX=ltx4<`pgj`X>J#JnQXh;^HPlUoDei9v$VqoW0nf}p#dxA zXWcw&rOg3+5hr{y5|B}x;Ny&z*rRItv4A8b8Nfd%n`_T9$}A8G<>wWz0-&uckEboH z1EWKHE(mIQ1Ma&#zlP~-SF4L{B35>=nOE9MQ($2SkijzK8Yi?<;K|k>pj4dZ%oy>#(pM=X?!``jWWTSx}{$4@RP8pR-Q+T zZAB^S1?Ns^QYjF*OFC}o zryQ$1471RQ@*;)%zM*)$6{}__*2MH6moHAX!C1|FpGdQOjEyjp#n>RKG_KD?N7C)T=-Bks5<<1vZRh8Whakym0#!W zm=R|Hs_`;VT1^#8+MG+SIlUr0oYc_`7V`J7TOjx_f8)|ruaCa~X{z04jqLbYBl~C8 z$c~gXvPWc%Y~ENSyDA)mswrrFXRD6mG~&Gn_ww^Tpu7eZC@1p!>L(%f@;Eg0QKml1 z>yM-2aa1-ugL(Cjq4H7qg8Breoq&H=P@hEAll2X1*Nn#zXb4W9z>F=8d0VU9t<~1n z#^adzILjjH3W=QS5;@l;a^B-u;6Wr*lt|u+O=Mvqk@H<5=etCxu0@ApqR{oIOjrrJy^Kd2V(Sw!Pj8&(A^uc*H*TW@x5yEESSE3+d>bE;@8P5J5QV3)l-mjsNE55ZZH@VXV7Y5a%PlKlAkdua53b{sn zg#~?qP>Tf}BSfhj?JJ2N<%~)UZ9L7J(;m&g^)^@MZA#}2!HpDq0_{hzxgpr$!Y$4< zxKVr)eVMXvJ~h7Qttfm)G2hJ%!OJX4ox6gUP2%z=^Yh9TE)Q2&_x>2Pyrk3R9_v!a z)YarIZgCg4sKqSz_u+8km(hJBm*uv)B(^FNjZdL_0^2Sx5bH{c#jAG2s$V*Zo>dhE zdwRL2rh);`mc72FViJ7?d$w~ArveOn_O7fd@55d)wj+qTcs_xvn2xXRZVK)`f$m+3rAb`#1gN{uR|X6Id|Vq|Jw`2+?yx(3j>tH`P+hCv6zkSB(MRfR!ijQNbow4u^kQy%J+#Q^IjapD~qD(v6IZ>{K866%5>pbmx3!0#o7!}-jO=!}JHfqj_ zHu5I*a2!uC(rKzeW5*Llv)iL#b_})*u--jMiWvFXMY1)RWA!uRBF(`(ee40@O$U^9HKKybaONGUl z!{oeJ>QP4(TqMm{!$iGamg6!e%v?f>xdO5P_N4m=d$Ya$m8-mhGJ z+5~R0UEK-?CvEtEv*ClqHvEaR;X}C%RNM+?$`-0mjk~EtHQs2cQq_ygDIHj$`D7<% zP^wyq@=E%#LWa@8s_hahcm+63Szy;aUs&0->8M=olgD xCacx^Ex+R*&+zf}jPgL%rH7fj5Ah0X@gZjOJGgcMW6ZOJbn5tDcwWQT{|{xDCg1=7 literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerInterp1FDM.class b/build/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerInterp1FDM.class new file mode 100644 index 0000000000000000000000000000000000000000..a86d5b7cec0226e8366ef93e532765fe1d3a57c9 GIT binary patch literal 14978 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 literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.class b/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.class new file mode 100644 index 0000000000000000000000000000000000000000..74fcd00acc9f9041997dfcdb778f22b3b9beb541 GIT binary patch literal 8930 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 w#f1Z~M&v$Q@>uhtic=H+kTUxgA?3IG5A literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor.class b/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor.class new file mode 100644 index 0000000000000000000000000000000000000000..69bc1e112f8df060eeaccf217ed571f8899a4424 GIT binary patch literal 20965 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 literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator$updatePowerTransmissionAction.class b/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator$updatePowerTransmissionAction.class new file mode 100644 index 0000000000000000000000000000000000000000..b0536f069418150f7d7cf429498b6fbbb85f474b GIT binary patch literal 5139 zcmcIo`F9i775+xp8d)A75tz`hL`h7LO=7VcViFp#4HX#Ucp(tlxPvs<1JaC`1#D=N zZdtmdD_KaIW}}59Z3=b}CbTJC(zNN8?)#Rue?rgcPd)wKj4aFcxOPrXrE})KdGFo( z?tbr^H~#a=s{k7Ck0{o|h++fGDDpU5#aF8eHk=6DDB+PPj$%N@pjbH;#c_NA$(ZOd_>HARK|S~+#kh!JRsg5l<~1BK8{aB@ku;X#mA?jScp%H zwa>`-Y!pjjM({ZSKQA69#N%Os@<;@CRpU`SCLSkcJT4A-LdF-u_x_tg@E5_8QG5|k z38tPFk7ue;g=ZspE`n2n&X*$ivY0w8`ZvAJJ03@s}`N=c}0Y2CWH zr>(oUr?Z{MwH;KCsL8Bq^d-9-OE>z6HM`j~Y)3Vm-D=j=%21j+S4x=WT84z>ZJL`@ zEl11gb~2;oR6`?F9n~4kbF{g=wM(2pYN0eGkXnf7p@*|(Us0$43VJS|O?J6PSI4gI zr0eKeJ1O>)uVkBtM}py7bVGMGNw^^~UN33W(mbSOhh^q9%h5G^W8H2E70qUba?EYh z4XxeH?bobsb$^yKu{JZUW_PQWF5ZiiA#Fgys+q~x+d7ce@{VpAWURvJ*KG+)+&mSb zb(lwaj-?tlRb+F==Cs&HqoimJt2wLMw#My;gH9T!2TMzv#sR(0wNybNsd|L$WY7t& z>X=sT|Kxz2UP*$EHsFluNy7CrP^N@ROS3hH#!LvsR`+R+FII{Mu1nMf$r9)lVcj@l z9-;|uO3VOfOHX@CTdQZw^+DUUQ7hQVcGGAb&}~OEoE_R=xp^WPE$gVg!X4%2PCK7f zDaV5RL^Gv~jBtP|)#`I|q(T$b2c0=VtRjmNqNOu!8DEj{RSA%Ad?vmcbj&;SgjJr> zLIVuk(7-AQJ^z<8sIIO-!|B%?JxvXCnXZ-Aw(26pmQLxV4I=d@*p40Iu}8*B3ciN3 z3f_a1jB^TxFf3s$Q(ps9UxP?}4FRdIAt3cBcp2wq6ck**h)?5fr%weNaf^(L3SPk_ z1-D|8g0JHn3SPxG6>Pz6GA=9l7QU_EJNT}GZP+SdSwK#k;3!_+UCkugR7{&q>731> z+2qG{(-grgl=PZ{W-!u{GdgB0Im!5*g4gkV89z|)h7jk6_>qDiV~>JX!S{lRWnhbY z;D9JS@s4gkz~g?vW*QnA;+%2SY&>nnZ;dPX34SUbZwk%)Ou^6bnv7p4_$7X&;Me$# zge%5~x0o&yt%Bd;cM{eGNHKjROITduX*8naqrut~m+^ZAf50CV{7D$=&-jaizv6Ea z=9RDv?P$EYv!2W|8OJTtWyELVj_JwrRylpsb@Hwg_i{ws($q{7_xv4~B$xrbzr#?S z!tTEM$7ylb{)1YY$*V4aiHXHx6umWI?~EAk6baw6I4g^U^#OFsjOHJgVscM=#j2DH zC3FQ~&WM94Ge|8H+S=);GJoV)G`j{_6LRcqMBQV)V&(EX3JDv6>()5lrszd(pYHUD z=1`}r-4dG8qBW=`-?hwpwIc7;2IRfkfV{`bUe?fgErw{Ae1gnQiL%vVyH{5>HHxro zT)XMDRV@2nQn!=z2Y*DuS<^h^=E-t7VV_D}Kszx;BsEHf>@`lO!=eTK4!6|Vv7e(2 zy~$F8%dUhiZjAFg*(2uMTu1kwVm+@&q{LdpF@3=$)FfKUg)gDk6IFl|c`K#2^@&GWwEbUAAJ5ZmlDdyTM~&ud0T!i_W0nEbPA*1$<~_I z@h&%$4lU=yuK{GfI^)&U;$4jqKz~_Ma^b_Sdi0QgDcY$z{XODJCAxS~^mt>T;M-aCxS(+G2B1d+?A8b)*k)x%JRpp0Pl10$F- zjJYdfR}5ip0auP7HjH_fFn@2X<^mQBHqaN($c@k;t;Zvw!4fpW=fl8klp((*c)I+_SOx)uU zRs2mwQWEx(1)o3zp&&rTU3Hew#}9jR_m|;TlyLXqz1+parAwqAA(VxJE@A233%Dj0 zFW}lCEGgi+0dR=V}o-!R1F! z;tUBU(o{F$5ay+Cu2@(xf`$hh!!;$yoiVK5}xLL=?u>DKTM^a z$3Ib!!no*}WfQ`rQ$as@A7oN~6L&FGLZowoezlb=$N0tT{S3FTFwv+Nain5DIZX?r z6J`jv(@#Bp^Gra Q_x1d`*GcEp2>A)^zfCdb5dZ)H literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator.class b/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator.class new file mode 100644 index 0000000000000000000000000000000000000000..3d15559cbada6091813a9078769af59751fbafb0 GIT binary patch literal 2268 zcmbtWZBrXn6n<_Q41^?_~sNw@vVVn1CI@SXQ0dg25Z^( zg<9}<5Qu=`Qq-#RP*mkJp*9rvgQgn!Qhh5!gyN z(%*F(k>Xn4PGCw529E*BVy^s@|HSPmbUk}hIH6SZIqS(rLnwwjy-?j|%d=~dU#qTe z#EOBf}c+^oq+IbzAx{9f)$#iY(V z11lCPAgC*G8g`udmrcUzh*V_k*dwuY!p8>IE!41K z;Sw%0$R1^LB*Fi4jPreJGzp#d?RyI!;-ZC3{J^mIz7DMGNE2wBSQb9lS6+Kxu)bk> zLt`A7)t#r*BBR-DhaBYnUlPwj?<)GTH6n(*)Al-O#O*WCf$!=mTL1P6y0!p^v$2&rK6n)emoXD z>Gu8mQhqvalP0g%7d_DwJ_Y#*K}qCE2v_M*J44UlS$faXG*c$iGnvw*MRQJ970rYA z1Xt*NyGm=29Ca03r!h~vXULE|U>6UOExv-Wb%?ANcd4N-NVr@;ZLku6_bnyk9 zzrg9282N=%Qn*3mMPzB5CD^+dK?&zEN8t1HRzJi|`f@&j$EPUJjtpTOMKVr_i_h9l z*zq37XbaCtD1pw>G4MEsvEp^64a0PWwUtY4;CUMG~5d3jIoG*&N-SJukn)z}Cb|qz{q#Gd7-%sp@vE@%DyU!k@;iST2VzFhe*A Z-6`CrbqaTIL1WYE9F00C7R?{P{0GNJcX$8* literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/ResetActuator.class b/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/ResetActuator.class new file mode 100644 index 0000000000000000000000000000000000000000..a35dd1ce616c32014f05fbc490b9afc22403a68c GIT binary patch literal 185 zcmY+8yA8rX5JYE zB^CvW0&_y<#7iK|HroqfSr5@^Ihale>(g}YbciYpu58s)5%v;Uxgfpqe3M>T@of4> z$91&zu{yI8J=nWxqEo>PmX)5$^B;_`nsD4H+i-PlMTeX~NJcq;($NR$w2+ONApZdj CzcQ=< literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/BatteryLevelObservation.class b/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/BatteryLevelObservation.class new file mode 100644 index 0000000000000000000000000000000000000000..e6ff8c236ca1ffeaf429328816513b26594f434c GIT binary patch literal 3604 zcmbVPX;%|h7=CV82F5996suO-R3k#H8TVqKSR_HQF(5%&Y?Th-5=N6uIx~sTec$)( zoc;p8Qd^L==d^z7IsG5~8$EsRWRgrmD%5<)y>sW?m*>6n*FV4h4j_#0Wh5{rVO+vx z89q$NXhKp(0F&)_3|HDPCDZz>jOQ>d;i`-+czz3Bz%>ci1;vc`dr^WWVODHYGUmX= zZoUm^84J)Q+-S#5WZICGk%J+l19=%Q!Ia@gUVwRqp)fxvA$DxT$5- zb1o%uNiLVrv?(UyX*PNBGy}WJ(3&yQX>Kx{Ze*vP&1ckPA(tECB7 zfS%LsL59A%2&4>?I|iuZra^LTom>4LVM*I0qxyTN$hl!-jx%(|^&C$Wva{Tr)Mhhu z;*T3CEiD zUlBl6O>hdIhTgnkCbTRym`str#4SrpuS0+eAa*rsbea@RJz`$eR+|H~W;yt3B@ND` zG;S913=yxm5=ivc0%o0%(XteR2tV0dhn@__3AyfH^9>L;{Qo#gp>pAfA+)hdmzIn^ z*&u&4rA4M>Y0xE?EV}22Nx~Ot+P9OhrE7v1=naQKjgt0qef zf7=?`r+RknnSyrf5Afx_t3F|&QS9Tw%*3BNK5tHzk={-@ezHO zf9Dz=UXF);M%Nwe_U~E6BW&3b)k5lax#s$b9T=yR%aAZZMkF1RcG7!^K3ImxT%o?p zHHnewQF10XugYB&_ TPW^a>A}BH>evGmpEW7kCifI(a literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservation.class b/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservation.class new file mode 100644 index 0000000000000000000000000000000000000000..e3c7c71d9772ff8cc2fc383350d9ebe6df26a519 GIT binary patch literal 3524 zcmb_fZC4vb6n=)cg=K5oP--xy z{2QL**S5#DsONb6?2qzzXA_bIwuiL#Lw09p=05kickbMK^UuG3`~_ePH65pr)G>~U zKD>*YeYl0&I_}`E`n;!MvKJ{GY24Q^r9;P;y_nW9gReAX`Y?-ZFLG*qPQ!dZ@+jzt zVL^=+)niG+*BZXju&m($Lr+d5V`L=d+e;1z?3X!CdZ?)>nlrI-V^yx!g9hjhWQ$%$yXy zutk|P^-MUf(=y8zaV_|gD31>> zF?3B5TZW?<$K}~tWtGbXYqd->v5c^-@{%PT_1&24;9Cq2-<~n|E!!7zJH2J|s_zJw zjOy~&9gkt*P$iPv!d-JpHEAhPQ>=PiZU$q|%r?&;*P14Dz1nmL!%!PuW9Y0&SGnVW z`xv@CpCW{|B$O+UmAD_$Hl1P^P7FucQM7!^->yZzL)l$LOVL{T(zZc1g0;;vhp zx7WaD7-blxm`XO1O46=)G!)5D04KAlkW)3R8*s3}U`8-I7)-4Y(eQ(TGAax*`ndLo zY%;zZkz)<7NnRC{1&eVqC(fl5GXA6Eug6pAS+zCKy&x#Ou|1S2q{j@n5R?yFQ914U zobsWDs)5IlDo#8DK1K~(!xs$s2=n%&+}FSJ6!9(n^;^L(7NKW9bjbgd@*)KOC$aRF z&s~oa7sEsZI^Ru+o*7~??QT+5R_U&Jtr@OFi0>gswV^@@van5oUzrqi2wQZ?`{?ZJ zMN1Ws$UL__Au>rxi;?b0%b&o!CZDFh^^F0HkV4%cq*SxGvuPuV+6rA6;V37 z_r}aqbB%n%&`(~RcBu}yHj)1&@s?S(dn|2O9cmm7jhLvjrhdcY)RU+)N`y*HsF}DB z;n9QXiGb?4g<(7jD9VKgQRo0KN2rU4h-QaI?8~IQkX}mXDWa}MDLPD^)OHde!%VwJ zy+{2ky0H27EP0JnW;mkCdb14*nv@x8uM*R$R~aaZ?EcOY=cu7Rg$|s?8G6Q4;ieY6 zL)B_}_kdBpj??oTef>=HUGyFrc?mYMgO2Cu9C?PW9dtiO&#yR=9r+ENvECQxdrBhx z7$j(oggzpnvor#35I~YvCTQ(8t==TXw`lzihG=z!R!^f3=Wzj@N)bNBC-hdM1cnJy zjYjY(VKP-!8^mtVTdnnz{+_>~zd-*}`m8I~=?zS&e+hvSqrSBPO@#qw1LhGaReJ|x z#tx1=$tY`{;b`pG3mj)p0ktvRxwkUA(WF0`x%KygzF^RfgAq;0RR#j literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservationExtension.class b/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservationExtension.class new file mode 100644 index 0000000000000000000000000000000000000000..7ae394974801e8d441e4b29f320abd00f6a42300 GIT binary patch literal 251 zcmaKnJ#NB46olu2!Gs2i+#n4!yaUh@DhneyqDi$jFPla7F4`ZIv!%!Zawrr-la6LI z&CGoBd;R_au)6DegraQM>C0p&wH}=vv`(bqQ o_dL7*uE38c2=hB+tE}d-KJ}Pm0%6eK11KX5k=-0dy$&$`1A^;K4*&oF literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationException.class b/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationException.class new file mode 100644 index 0000000000000000000000000000000000000000..9aabe4343c577647aafe3fee67addeda5af695b1 GIT binary patch literal 902 zcmbtSOK;Oa5dJ0!b#M$RNeh%$)0RilrZs1RI8c>SL_n@0^|*01W-C7;KPvtfmsA3Y zAJ89#m`$R_P>Ty*d3I)YX1;k{{rdhBz!44&JTyVrGVutHO+3LDR=i)-xz6d?rNn;gyy}rzB5vMXxi9MEq2xVf&(v8B2^0HW@Dhlnv zD3S5SobPppgvxO=mV|m=h4Nz-jAVQ&Mm}pA{m2#mP{c~hOJybfq7s5rgrtJ0Z#!A& zd>WkIfQ?qLNj`^@udbZx#CilHkVzuEIrfd(2(?@c!t0_G{#7i&bfPSF{Ase^NeAnP~2unzX*3FL*7$?+>DzwsjH&aAj_l|`l7Kd zw6gmnW7_Pgh~c#-V=lCjO%?H7*%X0{xN5c4(8PRgbkWDhzm7i=;kC z^oW;FHtWJSp>CHL#_Q5-1d$PePwd|cL!+p+Te9T&VUtI3z@t`ZxF2fCW1|{;ONT9~ zjgnEx+ZP9dH$+h96{A&9FBMPo;or!5f}tq#J%L(chRxGJ{_CxhKp5QCvCjACI!T)-sl#&8i+1Y$3LK$`j@u(tResn4X) zSS3l3d?dL}@`+^O5FhgK1o%@5G21Tu%I2!xdbm+t4g?jx`menQ2YTweP~6WB7&5QfH!C3q^60zcz4tGvv_Hx zR^kKtQHXJZNJS8DwdENf>v()-#hEvrR9foI*_(21`|4|v`i=_ePNZu zzYlZCiHaG%v}DSKP2^O?d?=?v%b2TaG~u08cRsee+{)1Cks7B~B+6)R2C=lW`99|D zB{&vgV(i8H^H4^P*d!@;xZR6rE@eeJgWoZ!4dt&rj3a^O(9(@-#7)?r%Y>7}0S!BrXzPm+z7MD@R8X*dUC#cMySSOUh#xICR!Mgwe literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationType.class b/build/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationType.class new file mode 100644 index 0000000000000000000000000000000000000000..60887dd99ffb560e6cf8a9b751c3ffb0055fad70 GIT binary patch literal 1427 zcmb_bT~8B16g|@~+ERp;Z$+pg_6u0Q6-rE?ETpEirfr(wOS3IwyJWkI+bs!i`b!KX zzVV<@B+BCco>1=LYF0ad*d08&!)(UdIv|3E(vgJZCpU!SFgfhFzz9MOg zUXu!zsp_>P!$8W=o0g(mB}Hp-hVa^Iu_))a%Ne;OXRhR#>LrvS0}L$fqz(?rP;V-c zDYA|j#(S_aWHY=aDW=66YE#`MV zJb(!d1TcwU0MD?*@Lvx^96il2yv}PT=ix3FLi|PmqZkusrdSp?55gI~&$WwL<04_` z{8G1PMg7*emC}?Z4SM*(MC@P^x9Fegr`zYH)&dv+!!<$DAd~zC%_2?2FR0%w63b#1Im{v7WhZiGCqk98BtAiQ?vO=c zXAXBeb|hMbRkx5m7xUP`eVZ`QPUsLaL=dHj7+H6*<0A#yPTR$AuPF8+hIpqqX^#__ o`40DX$P>ijDf&LcYeQcUM>h0}`7?U}exe5w)W!lu61Lp@U(gF5W&i*H literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee$1.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee$1.class new file mode 100644 index 0000000000000000000000000000000000000000..cd0a35a0e1928d670255b12e4952fc3c49860aaa GIT binary patch literal 260 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 literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.class new file mode 100644 index 0000000000000000000000000000000000000000..a655604ac4641b0d74037a4bb6cdb841a79f25d8 GIT binary patch literal 1721 zcmbVLOK%%h6#mBJWF}^k7`F+~6ezFMk2cc+;nh$`UAr|HJH)BmgaDl+gEP^@rhY`_ zA+Z6v2C?Y|v4ceyRM1oc2_Ye|;71X@bH=2JngwDp=eysz=bm%EbMO51_bfgTkScF@Tb>(w&4yd+wu5HljDdkI zFYIyCC>bzk%Vh)8WxwZo?XJHWblf$6(`))2H`x3zbZfn4ZLYfD_PRmXal=-l!5nVc z-||Cd8Z4G7h1vpB%3_{n1xe2r&Rx2|{d~1jEO8MpRf<&u*5%pxN~t0{wL-lx&rq{k zERxOy&7gbMz=Xd7~5N}y0YP~cF$y%48&U3_YbeXM+ptTThZAbPG|1# zl{JHAw;m1H?zW<#(>t>o_9e0t>PggEz4oeK3`9dh2RbEp<=`~(4xYqQ4xYv{7T$I6 zB3^Rv9^QBG3OM!W{>NoGIE&XDTm=ifF6mC=SqGCi?jS8DBPJ^*C+38hlVYaCxMEJ> zxPj!o_Y{p}pKDhwhm;S!4kvtQ-;~rz3CZXJN{wc#?dQD?XRz-o`foL}#Gl9F2RKN{ zP`FCTT!=%`z9JPUQiLLPC{l_d)hJSsA~h*emLioAEyQIi;DE^%5rat_&EAEP&D}vP zd-M*>+jPb7JZ*~Mz(=$nvz1RUf=@9`&#~wjUeKgWpluu68P&#PEWiuxm-&F%V%(dw zXOfwT_3Y1x{fS|LZN$Gv+`Rg)pR0*mjNDuObFwdR1Ya`q4Xr*NW$Rau(f=}s#eZF% zPQT_g#z@WS>^25+{I)T86Y1RVu(n}GwTEtEEOI31Fu#MP-P|(owJ@SWzoPK3Ik9i{ zl%L)eKaCl@s^$6o`sH2az<^ZxaaYkG-N3h+#?kdaKaC+T_JG5CdWjDIaNyzD|5o|- z0f%jzL%v`654~^T#;>pzQxBMT;rxVQB_nYqqe_wkN*+{_8dP#f$ze;$n38c@$wNvW zPDXK$C_9pj0wr?ix@_kPhpPFZh`(Qn8h+G{NtCg Qh7GLaIzpZ}uLCdq19C7cr~m)} literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.class new file mode 100644 index 0000000000000000000000000000000000000000..cfc27335fe517cb2908a282d087dd94a0c6c4609 GIT binary patch literal 6600 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 literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NDPFactory.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NDPFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..f160cca733e396630aeda6f89ab2234ad0c4a8f9 GIT binary patch literal 1275 zcmb_cO>Yx15Pi4nDN&?wb2iq-)y5m`Iu-dp z+_=DnNK}G5KMFD4q%E|!s4I=fezxE9&W!#0&ySw~c2Kslgf$xvux{a@jWpIQJhG8B z{;|O~Y*^T|@WjGXhFnD|soyZ9ol=`2^DgWOhC)p$aWooqMbzTmfRJJ>^mx$bku>8O zn9+S1GgND0OV1t`t_+L zr)RL=fAYjo%TQ6s?PfTNJh3lLZVDG++&ShaJdZqXSlG(r8MYZd%$*&og{tr)Ar86X zzKGhp3?JuZ3sq7YJ-4o^rbc>4m(#@1nV0+u*Q~70W0uErI3_S9hPQL8oR=%ZvWc`C zaOJ!8?y>MR!{OY#mm^_P&alwuaesOt>2@9vpu?t)r1BY7oKo%L1XI+MqjME4wXq5F zESN6^W~zhQn>2FCGxFK;1ngTfU7$9XfZJH6etxqq1Rd>lU#BPz@OZMLX3kLsmq5uE@ literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryException.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryException.class new file mode 100644 index 0000000000000000000000000000000000000000..4bf3e0f7e4d0f676bdd541e18e53c9288e0bf793 GIT binary patch literal 476 zcmb`DzfQw25XL`;l0YdGieN=d6p-o%DC)wWDJqCm-QC1W4<&ZxBvpAVCL{(PfQLd{ zN`V2fal_f)&!_Wu_xAqs3ZREh6KiM(*bT5J;9roTav*Tf4Ik88$xNA4Mx`T@_D{zG zjZ2$ofp$nn5378l-AGL`CY{j6DjO?DwO+wSIi*5i6zWPUSL&P!ndn>@T}aAjnT#qE z-QA94RZ><+qbZ$EtV^hf?OeM@Ib4yeFLJ$z^{gao`T~MmcYfOxXhybjvA&_&*wNoT zdi97cG_Wpk|Nj;R_J4NxZ5+q&c;$8Q2=(WjeO3eJ9-sc%`7^{5-#i4In@f7abzN+* WKK!i0Cco6-V+*ZiuWeQyc0K^8ae*8F literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryFactoryException.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryFactoryException.class new file mode 100644 index 0000000000000000000000000000000000000000..d55692d8188da5ea6c7894904e8aca55e609adfa GIT binary patch literal 725 zcmcIi+fExX5Is)PWLW}f!>uj1P$ZPJRr~>|cz~9th*nBKLOeOUCKxvM*6XF@v-$#3 zk@$dq6k;|3Dm9gOsx8mxjE=`=X8il^*DZi1HcMFW!LaCIDf6#Ayvh7qA5&N^VWoss zhT3*wm$WYidp=7AEm6rSIpeJot^dgE>+a?gvp|C2$ z55a;vRSCm!Tc%uCCkHCwp&SS;6Rrkv#5<|(eEZtvsZ&wHwN(Anp0S}y0&^klkncZ4 zK0ikGMBt1aez^=}?3B?hlKOb6=*!YTDnKcG8m* zY0L1j#^4?3b8UX;S{du8F-+I2{GQ6h$*@_*2Hs`7X@;Z!)&+*SKMJ3E!;r6MGb@TX zmO5nk_^+W(%z0cJHP&-xJb8xsdSimuqS8G2JlSHjsYbG8LI=nrM}GDF4cO5&a@G75 v3LofHUy!*%@fxL{M95)=tUn^xv4RF>2``Q>qk@-&C=FhrI(lM`P!99=Ixoir literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryProtocol.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryProtocol.class new file mode 100644 index 0000000000000000000000000000000000000000..fa6f15d4df36dceb8b7c18e9c7d7bfa69dd74ed9 GIT binary patch literal 302 zcmZ{g!A=4}5Jam1Sw)E^a^?&d`UAWY4~7V24fkQUvksZvHZ!v%{+b6rz>hKx8#x&- zT}gMP>ZQNFKRy90FwStD;f64-BtB~?OR2mFp+B2H5pGXgvDNEd{mO<&n9Sy@gE<;* zqjkKKBC3BN+?RUxEo~_DDE_?**%3y$w!V-@>r(FYk8R^MYN2j%iY08NW#gmNHgGAm zX(X_%-yG*{lW*29U2)*%m#RFs@xQ@@yN=kIrsDPfkeG)ALN9#)=noPn20+pa3_Hzm MnJ$E@G)o=u zj?_nf2~WKB0R*KINT_c}{3yiS>$SU8oi`r5<1=?=&Y79(^*{gq@fU#G_;Lv=c(8~# zK9!Fh33nIpSrQMI2!Ae}UnH?7?S2v^Y0F7eq&-+bmEn4=UaoY?m1?6>=^X9V_NtXe zr@h^2wi-r_&eMk{{FLh!w+DLDcTIb+!?0X(Y|rPm-{#g>oK>VaD{^ChuW6JzwTe-F zv|n#@%0{zPZ&w<}vxv=ljYJTCxf2#NRdFrs45=)Ucm`%fX&Q`Seps<1!(>Q=q@F2d z8Wd&Nn6G9U5o5SAUl2q6P>gl%`eI~ydS8sVEj-;EJ+<`a*ls?qxAd`ZTApqTb1>{W zZr}8J&Z%&p>9xR9o_bo(o(dZFe5xYD+F7kItj=wKA!hRt?JL%E`eYKjrfvEUi6Z;< zmW^DS0!u1z<qPekg^+FEyR9 z+Y<+-6udEaytn1$PT>RGOW{3SOyPZ8P2mxU@aTWtBSWS}qtwb`;0mD~ahnf>tF^ba zY<0}tzGm3Ia8J3FlWH<4+j__&-FB86ktF!zy!s{WtLFiftZxX&9!tW5KX%hFk9FMZp zyRy_9*|gj}*@#>}**Icy3B;HsbWDEv@>t2g1j`p*Ad=sFf#@$PAxFlm5D~c#W1h?>EK=VUDlPUa-c=UPxcf<^YT*K+@ktlAe!={wtboi#qw5=KBrSNck3?5Y@LKIhmQ94E=xTM7~CHJ|c-y z&NhmH9C;$8#wG1*vV?MerwXPf0YO2AJNTG9a%AD;$j{`MD4irbbCQ#|i+e%xu^K0E z_fN!+(}~ziEc}Y30*i44mJ~RbP#~qi@`3{AlaG%!sfKKi!F`xVg D#(RAc literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NDInformation$1.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NDInformation$1.class new file mode 100644 index 0000000000000000000000000000000000000000..c05169f621c02816a8020df5f251e3302a5f45ab GIT binary patch literal 1309 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 literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NDTimer.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NDTimer.class new file mode 100644 index 0000000000000000000000000000000000000000..02a8c963a3a385eb1d99937a32f6fa7a012250dc GIT binary patch literal 2491 zcmb_e-BR0D5dPLcWE>?S1`<-*RHd{5Ll7<@q}WXYwjqG|2{vxin~tzfjZ#^1^+U-6 zbfy=5fj&X6`$LjRXWGlo^d0&tZTARcoEdk9%vcxa=K{kN|K9TDCaXg6QVFIIAieou}9P$bZ zajYm&-aEW?qI+FMP}dwscsbkfec=!zq1j_`G>-mvvj=#+N0 z%X%1Cwy!slJo6Ms-*Qcn7d20aO~Wy2!mFgmJ7Q)C7lH%JAD<;`b`y>b_m`eI!GQ>@ zDuZM##|rKfewpYhN;i%DPlP5bgx(wnlyIeJIbtiU?+dSN?At6!7Tv00R}9aR>!z?* zMwFmz<;zxGc!a&~(mXNC5$^FqhsOy?F(!@(TJfoIXy~@#)buqc5S|w{0$~=8s-h8C zuES?~#gP?o%6?8rlsG%9V#Si4jC9DE8EH+$7^YOb3r)p!j40SpQN*T#Efw3?AuKih zT+|#_<0O^&rhVyp+G##oPE9+j2JOJ`wS6HRt>L+cmMP2`1&>wiqC^;L<8RxdX4p$! zEvySCX!#)dlvTWin}l2o+F*olv_Qr?!VVjz5lCRpK;~r%&5Y{d44sRWOUs-gTyI&4 zzL$2YQL%?9!a_@Z0^*6UL*WMzOeeQ2=g|Es@~WcZQ+!6a+2&P;uR_SQASB&$cwza> z(rq*%{-v(AiPNMVI3vBi|5Q{tX_9B6-OzDPO2FtUdgsQt(M1f-d!t$vzCWIx<*xT_ zcN@~=IZNGkYc)PH?clhfyO`c zVeoGlJxI#F#qT%x77&Zp+&uU_DVrM0-;>t^)^Pj5`#g^G>U-YT!*e$E0+gCMMl3ai zo@4Y)|A`w@FLB{#D9QM9^#6v$lVtn_F8-04K8AX#y2PrVBC8+pIEFYt^XR8E2Iww^ zXaO4CLy8umQwABz;zQndjae`zZefyV`6ii4W+_ZHnH@Kot@dP7zarM8a+&dXsXoV* zHt7IMnf6Ou{Sg;7d$XfI{QGyCdN3kM40ju|9F7}{Th Ic%DG)KUlrhQ~&?~ literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NeighborsDiscoveryMgr.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NeighborsDiscoveryMgr.class new file mode 100644 index 0000000000000000000000000000000000000000..518415b3f5258dc4d5434407d6339f4a1f85d344 GIT binary patch literal 6837 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 MrYN5+e6EM*|5@RL#{d8T literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1.class new file mode 100644 index 0000000000000000000000000000000000000000..2cfb62a96ef0ee06849a0a6affeedd4927b82744 GIT binary patch literal 2913 zcmd5;TXWk)6#mw6B1b53aT{7vE-9p7J0(g=T4)^#G;SfS<6P`|#?vQ7UK|xm8?;hM z-r?6U%)mfv2G5jteiXx5S#g}=nV5_p`rtj@-E;ZQRr~ipf4%^)h}tAB;Fel$>(Eiq zu$sbWI+D1fV+NmV_(DfY(J$5gT@7nG3=}oo({Nu$8ei#{#@A|DR~!#CJk(Iqu)&~} zi&e+vK7+CDdE8%XSyFPzFjX$Dd*2A(wE{4v;Rl&ZH+gX6OUaP|!-Z_F^u&5uKRe6_=z33JAqAFbjm+_W?xABgFGBz0&DG{a&JyU)c zTHk-$E$y-h)~O-6%c&|FbspS1u=#$szcX|>C&T@HK`q>vJLJKlLBnTDEjfmjvotqD zeK@fp)7w9h6s~OsYorDS)sHf?!*DK|5G{))S9Qyf#Z87+Z~uu$|`|R z-<)WgZH*L3r1GcHsvL55oS|tVw72uN(;ZxE`j&dS#)F4dukc)(_U#) zr}MZT13XE#E<^-p1rJF#4<4>Fl*kp^9ya9Yvc9j$Q)arC2e5aNU}20YzLQF1zA=_fz|pDt;UG56nYa&5h9vb zL{*rt6CUM!N?Cl4^FN>Tjn(^tlIjKcW2}&zk~brLz&OdX;|z5pdaX}*oZ_ppbCZ55 d?w>^Kr?^CPmU5FOco*qhC;BE)gXk<0{{r12MvDLd literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2$NDInformation.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2$NDInformation.class new file mode 100644 index 0000000000000000000000000000000000000000..cc355008c78269d7ae5c234765901ae390decee8 GIT binary patch literal 5120 zcmb_g3vgUj8U9YX$=+;kX}WDw(o%Y%waq)}%eGryZ4*k`B&|(J2_Sg0dy?F;dvCaV zw343%&yaVbX1Pltc%?ZznF7%GCPY!sdv%*C)5`zmo0 zMm5|V!&~vTDBd2!EI1l&QSGf7Zd2{;8urJyTy)V z{Te=|;o}-Up@e)giccxopDw4R{99hF;WHXOt6@yT=hTV^G<-gaF9=k1T(zTfXaDuP zI=edr#8!csn;kprnYPzwrgKuD(v>&nWY+6!=bSCAq2U3?-DM7>IXACskGa=u&3RV3 z^$IgP?5W`m0+F5jJcI4RjKhg>PUP1_ujZr@4@uIwGPyvMuitfgN>cRZD#zjoVE10<*d-TlVBK19F0mc$bqj(|x9EDH=kGBFbDc*VEo< z4?1qf^eo2~&^v8gx|`ExHY+)O&Dlh`v_uz~(alt=fZlcr?4Ymt*Hn zL9;10I4E7^(!xrC`9-nTVdpZ^^{M2lnM2Z>3<;W1SI;<(*@Y;fv(%C>cDt;sCos3J zzDQsnW7AO@3)q5HVFddDURYC=9A-qzodF|}x`4YIf6{zt+)zP+k!%QaSh_cw&H7s3enEdJZ z8lF&?pJXJEFhAMl+-!@$d1o?O-~wYfw7|$Xl;kl)49Au^6wnmPI4QWr@`jDhc0U5-7Z0e5ZL-!sVf1!VM^KBpekI2IWi(um1~-=Qcl@ZD0Q0W1X;GIH2GP+P=bpxfA1&{ zVn$$gGUvL?nyTV-Tj{jAX;dX0+cTNdx2b|uQm?~1SpC(!#AL0TS&~>PI|UZjb%w>T zNMiw6bg#MyZXe`e0?~veIkk9mlf6J6xo0 zlk#|ZN)F^0Mhi>XdDZS1%VYu2v|gd88O-kj%ch~SnD>GKm1%k)yrx&UGQ-<341P&e z^3Gq51-J|wA+U*WWmwA}?-uOG)kVT@d2#StUOc#NEBio{y=~~?vzu=>Vg~mCs~R4K zXlOi+vWB^saUA6hCsEP=D5A%qv0KTmIF4B32~<4{Jw7v!bB=La8G86!zz+`K8NzxN z)p!mIS%a40d8}j+*v=W9%BTW6(92e^wqF^j7ZF7Kz55#;L99O!ImNb|01n@aCU(mL zbtf^4`m5u!^N2U{7oWpN9&-tzHZp!p?J*7?IpdCbr8_94hFix_l_+OhTmIxRBGIq` zqeOTSGJb3Gn^3)v;ugORtZhJyV=r*^i$zS9ls#uzr-H=3N~Is7Qe>r_>FJ9 zL5hL>q4lcQhuuCS`*9T=R^~I(A25PfLPiexjC7wmf%%)*)rk1qBS=gorFMdp1?;Gm zc`VH1y!fJm#bcp*DRz0;t0?!ar&n*-c)d#(K!BKBGNcs8+np^MH!FlDQi70_S?WmHA+5DTU3;zT2x?- zh+@6aeAG4ERgHS2{8%K45Wj%LV2JR3u2Bfrg$PfgnJ2QPJ3zXmr#bXObrXBO6I#bk zzueR~{!lTpHmsnG75vAAY6E2F6ETENWHT{K%))#z8-|FZS)^aD++v0dt3_Z zRu&v`&_gEn@oJqzd)5sV*ePy$M%45yr zwJ~NvMv$l%P2{ghw5c}q(^i%hhy|Qoh?(L%#Kj^c#9~}8mLMgTA|sYzR4m6Gq7DZ| zJ&uY7JRlnJ5@o#1FO{WYg;*|DidABj@6$_|_YdM8+`tkQ#ZlaeG~-WW6ps7ZA;KK| jxbJ7y7O^_?v+Ajw$$vC(USYGblWmM6moi(w31$BSkJ?v> literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2$NDTimer.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2$NDTimer.class new file mode 100644 index 0000000000000000000000000000000000000000..468868c697dd49c240d32ff5d0b8d35d125ab305 GIT binary patch literal 2391 zcmb_e+fo}x5Irr7b;;Vs0%LqhvLPf0fmwWu9SehnBnUzXjDV`-CAF+3Vx85jvKL~1 zK;H6_$9zUE*e<6kc}!J)!~fx=XAu&vQmSy3^e~t1**<4mr+fCFH?RH#FpHfOMqnf{ zjJZKJ@NaTR?QW)U3%8TFgS!cQmcl*UkK^+cQh1=;xdi4Dc$mUfEF`d)!XxApSc;<% zM=_2P;rv$V@lL6>{q<&PYjvYYpfcfH!Iges%3#-YLO~dn!fx#ExuNG5ZQpVag!gQ{ z;l;5`xKuszz3n1st5OQD;F!KIe1cUGp<#M~XxhF}7fn+N->{o4$Eby}wz;uwgn{k& zMjOeiALAHRw=RmJ;R&&BO0yxn-CGkqF>{2o!M^QJ%n{c63CDqxwP!Ne7lCat$h zV1e*krmrad4E8@6n%X6tDR4pw7b>0%m0~ue#9dk(2qSD9wSS**Kr?#c;dTI_(25I>$Plo z;C>su)s}`Dwh6gT1jXhQByFEbxUE)1uh!SbQ*ttIw$LEIcm3+oyZQ&U4~GIE2AsX=!JL zaQ9td)#HqM=N(Zaw%jS02BCb~)V)PISLv##7I>V5oN7ClGQI7??P^+fz0So$xNf;k z!w;q5x7@(6Tu($-n6aboF;0u`2+`tpn<-E2Lg&kP1Pp-zq*aUJ^%&pcv1reIg4b!) zzu2zxT6u_@$T*K5^X^AJH^B3J_5~kwO+_Dfv6_Vd55PdL&&=q)2g zE4WCj7^5;KX$?21f}6CCM^rsQFW;sY!y=|J!?a?!!GvP`*>s)fG_S7mSJE|}hk2ev F>_0{iyM6!w literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2$NeighborsDiscoveryMgr.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2$NeighborsDiscoveryMgr.class new file mode 100644 index 0000000000000000000000000000000000000000..80be92826978de4142fe1026c0bba59c324be0d9 GIT binary patch literal 6847 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 literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery$1.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery$1.class new file mode 100644 index 0000000000000000000000000000000000000000..1d7275b6717af889cfcc5663911ccda86d530a46 GIT binary patch literal 346 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 literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery.class new file mode 100644 index 0000000000000000000000000000000000000000..3ae487e26856b6f54c48ef80d1008111545b3560 GIT binary patch literal 5984 zcmdT|i+3DV8UM}ZvB`FlwCNKH=^_!gTg)_Vc}TUGW>ZMrCT%u}CKSqK=VmiucV?MK zO%#f#pyC5j6e=nrDn3A|l1-&jALuz8|0s{YJG(pCq}w*>Vb9T=lY3|Gz2Eo!zSsS} z*?<4%-OB*_@UM1!9E)=Jf*igmhbQFlWQ@D#qIfEXsGPqPLpz?1;mi0+6km-&m5a~B z(21wz@n_}J*P{4(4BhyKTzM{vZ^p14-;yuimcw`C>+|y9cjeOyQG8GG`@S4rjNumi zK+5`|9A1(FUXJ2?47cN48-66`S7P`ve$s}Y%9mGT_!(Z4XMZk{y&lCcqWEPLzl!3G zD1NN~3e;iC63$>=cU|EsXd6ilSvk`Z+(```8<D-lU%Q zMH8*_fr4Gta}N%Tq|!rUXNE_{hsGuc(xf@w!ZY&EP_WGsW^QiAcE5eA~rmGpEpj*P#%tA4*Wqd1ha&%ntJu~lWRcga@v-VlxENZqD95=L4D<$cS zkvaknE7)WiW8!gNxSo_JK74tpDx^>hrS7tfLAy}!Ei8E_*GcYO#rCYQ~k@akc2cwQ} zSv*IlPb+B6+quBIcdt`bd7ji-I-rw+M^a-x-H{`a9sx0NypCe$!@U2d#mX};dJ;~;Z@T{v$o}l1y8~C?Lid_wxwkj87&3o zo1`Q6)=!$2=^atfl-N6|pn1?X=!&j1Q+32I%!qPUN$1#EJwK^Crp&S+)p**QGnw3{ z*XfK6q*@sIgxJEX!J&@Lu4fk&M8txEcui0ZQy0hai=Hrs7P6u!vw~#praM-R9V*A@ ziMhfHmzopPQekzD37!|uK;Aq{#XEAs8=(nOBIgLclkhmrAy+GxfJ`@DI*Gky1goR9 z)v`Tvc9H%_td6OIpZCl;yQrDAHh-WXG^ZMbS{ROp13a~fq2S;Ruu-tpu&Z!GLsES` zD`U5}fB$}7kBLS)Ode?ZEAqOtNf_-~XS$cq18HTfC|&-6d6e@BdAu+6IFcOe|yjPF5T<^Smf});0@a;`Pb$ zr{YsMqT+shTE#GqtN0AkDjvXtD#nme@bLO#WCQlE1*;(Yq4N**3;ioq`ArnRRq;E# zso<7t6;%br#vvN4+aIYIz)=-%;r9(SM_9V0IsTyH1V$8WUfTl6&9_wyBBf$f4pYde zxPV7h{87e3&k8}k@}}ZXctpiJa#)g-B`m8jAXHq$pB3y_A)fHuJ69a5T<6I+)Kvhi8Sv9uY ztkW7BxWL2k=je#L^So_ZOia^Fi5WjvUG6m9iOf;9 z{T35M@T;t=$ZNsNczX7+aYxUxf^Dv8atCeSVji*k<=1&r(dYB_TJhyX3xv1o#iFpt z@y^-<D@!o5egyMLoZ{R`8Eh#yj`Phz zGoOI{$z`-AFCjX$jJ72xd~BcEf)ADvTS6px5u29K#6^|+9ZP7w5OAE}cr#i#rpRXq zT|{&%(ex6D#ujFhJ8GFfK8w%sO_7DHBKuXe1bY+7<|VX{d1qN-*Ag}--{F4=Te#Xi zl~k6obqU+}vVBVKEMvzKc2-}v1+Tlfv9pAmIPK!J0`Lz01O=+zLcv?9^lnTbK{)pi z&@oK206)al(=}ixLa@^z*yrew2>J9SnCEU)4?d|?(33qVqW1PAZ97@<*LUKjpP7(v>!Jjjc z#49yg?+dlwNB5Wk$oViV1}dPt%Alp}NC|hYW&E1_EtH;oy+((w3gb3ab|q2n!cp9Tt&|u<&uV4hv=dEF$3 T4s!11Q$G_*+NhiJAw>QQt+A_W literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryCommunicationsListener.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryCommunicationsListener.class new file mode 100644 index 0000000000000000000000000000000000000000..a183b67a8e9102230ee3661eaa96b84889b28dcf GIT binary patch literal 4109 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 Y!Mjf}E~}{VQO4#N{jD%QWmZl67ZdJtCjbBd literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborTableManager.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborTableManager.class new file mode 100644 index 0000000000000000000000000000000000000000..d1cfd91df4f2e4cac4e970390c4db3c0eb903dff GIT binary patch literal 4598 zcmbVQ`+F4C8GeWCEt^TmT>>pEv`TJdTM+_*q6tYbm-=&6)(u+JAQmuMqUiyC6PQC!1ttmIe=5L=(Gr(k&*BF@k#)% z3dGlB=5=|zA=7XA@s@&$_Kwcho!x_bJ09B6)xUf1U{_Cv0%f~`;;p8Uv^B#X(&8zd z?}i>59UC^SL2WqB_p0uF+JqKP*|B)|el0m>%kU-zYF4g0mb4X==ZOvJ5!Gu7sNGVG(2EiF=MnXH8P^hGGE*r9n~!b>$~+-ShH+B5le=n zdO|bwWH^=>kB0|R#=wrgK?hbcEb>$k?snEugC}lA_UAx3d-M(OBP`LrIcCJ{EeZ;1 z>xjd%)r=C|;_jHC_ofoVde-prZZo3AhcqiD7H8P-*kiGzg1w&+SeBz`EEzE;bZatf z8jc;&aG%jG21R@G>F&`Cjh2fAwc7<N%`lh$}_LVTx1?35PI zo2_OKybiJSrNT6CTXzp zX8vlD6j57wE*V8E5mO}Qze;$GaRq7|f|+L_Fw#Z3nlZP=P!nit3_IALms} zBduWLP0gEgd&+7F_3H;xWG^&gnTb%XiVK(_{JM}9iRk0D9&HK@j_H;j()g3v51IR+ zOdO=FWRr@IaM6!ns`wQ?R?u)8ThkArF)bNN>V_RknB2e~(~OX5=pjbeI4hY>^_Os2 z#V5F;Vis2wl*}>PZ5pF0evN(woj2Wf!FX&5Nr;6QPFZs-$H3ok4+oZ0?)0cj%5Rx3 zbxooEj-I}uuHJ1beuq6OevhjvKE)sAxzw$HjKfA1e-v;134d1c7yMPl-z26U{%mD1 zn`^gOZ4}&dEBz5OkuZ($z+{rOm%u7VA$E4R`jXUIauIvIPM8OAJ6 zutv7V;~jB5K?k!~c$oieYUUNK`8BC(E~)Y+SQHp1J&ce!Wh{w%=o5q3GlL3p-sb~Dx?hBib}mPP0iCq1!vT+WK32>D`ZOFkgAY(Zs&we~j2 z(ksq;JTlCldmB zve}@xafk|-Bns|YKtcX)x!Xx$ocm_3V)LA`z#i9Ko0iQt;JR6FR3A=}J)fIq%wAqC zx^-jJ9+TTfmvh^QCEG=+HDWslYYDN>J1Ch#JSt1La^A3~woR6MozoL5c`+{GUD}VO zXu&2Z*vz*@2=K>q(CPEsb6OsKPRm1%ZMmFdPRqlMZIEkusPeg;Z%0wU9&m5{1t|3w zv1s=N6imazu9sckH2n3I2uvf$ks^+$(3OPix=1mj4yhI5nK$eVjYyfb6+4gQabPupy0QXVA=U+57lhCi==hpT=^| zEH7Wdhlr86G(zPo`I^S6G`=u}JFi>w#q63pb3)DrD`#+58mo6T&Q2lN;%%I*@m@OT z(EkJu5z!%jU`m@G*+*#aQ>6cC+WQPs=osR77L)ukJc{QWn?rPP5e$5l){3i-<)Y~r zzJ`ZswSq^o38>W4`XWl5AR-9}THorLRo&vL@nk#{l^)&GB0=Y=@upFG8FgvYH~T`> zKD{|m9pFUp;ahkb)hS~iJv+`9~cnweD4SuS>Nmkx+c-cZP zuf|U7W$t<@-Hu1ekdJG&Kw~dJjW)x36Zx*hekW!mcu(YFhIjEy%>0L}$$u9PyHr&k zy^o#Zf;8@S2daD5WSFa$3BHiL%UDa>cV%X-{ZnSj?~$RYYyVhLNb>HU!MZbO(_gvQ(BsKNfmJ?!i2c8Dh6KjTw!W)s`C_!(%UHG*FggU8E~qJ8_%Vvpil*4R@(e>@(F!;h2UpdYOXp^+{#>&V|~n75&IwO9*czl literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDU.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDU.class new file mode 100644 index 0000000000000000000000000000000000000000..048bfb4ef541790bed9ac4919706d716a62ac2b9 GIT binary patch literal 3443 zcmcImTX!2*75^N3KFR~k3Nn2WQLLj~blscAU*)DFNVJwa13G$3O z8YOXna%q7=3B9GXv}x1!fx@C?6;>ld4P`AJ`^H+V{s0y)Jn+bC7vCOTET@L2@-S!4 z*=JwA^X+~1%m*L6_db9TydJ|a%ud{eB^mNj6k^a|Mq$Me!Lp8G41HLUg)PH58NMDx zDT-Acjt)15E|kUS5gl_;cu`bh=!PG|9#qBnyv#1>xERHnthv*NOHq6yhW#*gd{f@v zlHpO&{I-to==iRV@9B6<1dr?ZzK$P6@xvG)J`u%_6n4zaX6Lfw*{QRc35EF7IrF@k zE}2d-o%220DIQU{Y20-xzUlZ2W~pi^L>DG!bD8Y4f*K3)@Euf{o|u`KKRY{ldVVrD zCqkvr)fDDtveUUqdfzHIdwl!>Q4J|{`fFt?yG$RPd)6aWtKthDby6X6)OKwDm_j%; zc5-k*K^u1qgt2qVcC6{@>XPNnnM)-~;!|$kEG?LxE$fC*^H=PO!t9h)O`D!?t=g4z z!CEyPtCF@?%cXR#>JZ>uy6W4dO4_mP;>wci73@mhJ#Tqy>2jf(o^D7dno=SqGdp~D zY|Xchd!D&Qpn~tr7*Akb%v)vOb{&Q8I-|Cm&SWQ>Vw!48rb}1@t?ibhY}GGUeX?(v zt5ggXM6b7{H(~nb4JxsgV`>^j%b(k1Gn5)6BBQcJsHMh)NKu{LB%7+FTU6VGS}NdN zFPmP)3i7j%Ix{x-|6sGjy2#^_ZiNn^F}7;?D{f)hTxD)!WzY59yjzm8h%zyifZh=E zq>$LcPR42HPcPerMuK8Fx9a7s6SfpfV!ND~31N6^Fv&Cta$o`e4ZxEywaqzn;tC zNzZe=r0=cqswaIndBL-NE9tLTN#}&3{ z*lODr7i8clt{8Y8KQr(GUgRy9cjU%OJXU=nh~Lb2GBYuvuq$xd)|U+Y94{&K+$bNb zE-zc2LVBiAFSJkc&aaw&eq|&%d9iHeeXEc>z?>XNnoc3P>{dA%co|m>ynK-z+yS(nay()A+=``nf!WS7p7N0xR<8c8D6x`10+lkDkiGExb=rdld! zkKv%mq@S~qP@^+gi;k#dHbqmeQ&hOK;k+&RN9y6)C1SOA6GmIf9g(d_$#RPRN&q;+ zFj8jhBSetN3{tR*{F$Xnrs%kyHEvc2rF)yWgAdV_SuR@+tq*Re@G)fdf@BxbeYgHe zRoIgn{Ft6-2&y^{!BozVTluLT=2tR`UjAmJp>RmPxzM>jjJsRwdyv4rZR<~SeP7#J z_U~_7e}+ET;sRgnazO+od8Wr>TrDERUlCyE&^pvm-*t2hC9fm&+rZ%S9OJ?ED90n{ zq+u6Lzd(7ChBU)*jPWfq38R9U1nQvnI41a(Fn^(agzt$BXp8FzPj4WyIJ}PNsFu*; zdJUa5#1dM#h8+p5Hy8(MFy6$?qu~v7Eyj1ocdg^*KM&Use}_@xB39S>U?!#j@$;h?l??s=0mCY?x_vzS=>PPBCD%s9k+}|CD(iZsE_K2XhIJKs~Qpy zN}@Z1MDLFGN}@N=x0uk^vG3GDQR;sQ$@=yN_OpNn;>j9rJ;)X;dZM*k@ti%-(k7*^IngzP)qPo<@*XhK(F%s0se}=wF>xA3@~AjGX+ob2mUgxo~GS% zw0wqr;8_;q^DNaDST`@y(^dMqMsKg+0)0J(*YO12pyyxE_pc~(^b literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDUException.class b/build/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDUException.class new file mode 100644 index 0000000000000000000000000000000000000000..5870f81847970c4ad2eb937b849a3523adb742fb GIT binary patch literal 775 zcmcIi%T60H6g{4#NjgoT1OlZGNGO!hqIh3W7ln2eQKUemh?O&A5~CS=V_j+VXuIUme|h?7RD)w*cDMC}YtF!%_t=onNltmGiHCJjI(b-j=b# zP})^mWuF-~Tb(m;E_fvLkashy^l)bq+3GPA_e>}mW;;sDgFGHcdn5)CA+?SPMAQ>j zx%>evW+Rm{oOEQ)h0SEFQXa}!Xqj>qClT-Fx_kKji07G#Qm&;Mjt0htDhUc=4Kx|NPmLUbE0nHLzN8`#&&m4af%l~6CT1vVj0rG{7nBhd=1?Pg7tK@TQM^Ezhx#w< C*3mTp literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/reconfiguration/Action.class b/build/eu/artemis/demanes/reconfiguration/Action.class new file mode 100644 index 0000000000000000000000000000000000000000..45ef47857e47306f5526e7d3a189eed601af206a GIT binary patch literal 343 zcma)&!A`J%V>)0&9mXs~QSM%Tl@KA&)7)~5K zZ2q0ee*gTl`@_#KfF2$q#1ZZYan62Vye-^#NJu)#ge#>>&nvr8AH33zMYY%ddo8y? zmQLSiuUVfETDL8}n9%L~gL$51!%5mt-U#hS6ot>!nrQti=tH!dj;>r}RcVDlh+=KGGN#usHJy~nB-B@P;RE;(K8}5y2y{|%!^G*_6ap8$ezZ`PlBLs`oKfO(8whyXRQW3j zJoX|grLvBex{z~PDnlHVQ|@iWuVFl%JWU_s;2&i-(|8n(gZ_*e#_NPu4TFzUA7?C0 z^3o=Bt217Ez5%?qd8OxM2Q{L=)eaO(Np41TI@g2Y76Y44RG9t$GXp|$JqlM@~>0Z G;OHCAM}mF; literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/reconfiguration/Actuator.class b/build/eu/artemis/demanes/reconfiguration/Actuator.class new file mode 100644 index 0000000000000000000000000000000000000000..e35b50192817e806bd9fe01d7df41c0af2c6ade5 GIT binary patch literal 176 zcmXwzK?=e!5Jmsg+NvP9@DPg79Ke+uSAq+{{TQburA;7BJe&&;;Gx7+a5D_d`)~gH z^LzoQFfUP-m=P9@go6&o*@3X$Y)>seSjAvEbrl_)-zVncqStaXoe-9Zj+_qFND_7u z75gB)8Pr{RwlXL$+S%GP(er3l{|I6A(|2qeb-uOfK|vs7sS`jsVS;?zFikT<@dYFN BFF^nR literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/reconfiguration/ActuatorRegistry.class b/build/eu/artemis/demanes/reconfiguration/ActuatorRegistry.class new file mode 100644 index 0000000000000000000000000000000000000000..70c79c33685f52fb645da1e63d8a3ad3b48b617e GIT binary patch literal 255 zcmb79y9&ZE6g{`rRy&E{Kj_j3j!rI4f}r3Y>$Rk`38abOuQ~Vuew3IBot&Hw-1EGz z_u~m5N0wrgVoaD=E>-K;ZVKn6GnTNN@7N1z9XF~K7jC5HR#+~KzN*q&>6Fo;*RK~R z!qn^Eoa|`4EqJSHCd_*M;oE2Lc_nX>u==B_w}#c7S=3UOVt=lcx{%S;c#rjv-~6z$9Dn)jaqBK2$NQEqGk! zFz{o(kD2-2eSQI`aG@|&I8``PI44XK=bBB5frW5${m890l6m8kUh&2RPFmQ;@a|nJ zCi@ulVg7#hMz|`1SMkoV_~4#nrh*I&(Z7Hs1pA~jKB}~SXSE&+qUiMj;e8`@ysIq7O zebC$UVz%DAtrm}jzS`e8uY@pC+m35aa<*x*-0sA9-5AWij2s$v8RA~w>!NZ-Ub0+0 z(OGodm`5>6Vj?C@2pEW5%~Hl@N!caaZG*4o!3Xf6j6XsM%?$zltatd4b?q!I2SoU4i(Z0f`lw) zQ4~Dh_fgdM&-DvHifMvTf^mWgVdgo!=b_fYIJ*P`f ygz$QURHbdHw%M8UKuB8%4r0oZMQ0WF34~6ZZhU8_N9f@Nh`Wy@CWOH)$M6?WaC6iE literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/reconfiguration/TriggerPolicy.class b/build/eu/artemis/demanes/reconfiguration/TriggerPolicy.class new file mode 100644 index 0000000000000000000000000000000000000000..d94cc2023e43269de1bccd65d3c9d6a64c1b881c GIT binary patch literal 330 zcma)&u}%Xq42FM~>s=`n5EbuGmIjHjd#6euf!NcliBjDqm6IUxY8`lhJ`^HHZ|K0l z;!l?R*}r`F-hTm@`d-rZl z5*@8~>O@)GzY$8|klL)D&AN6NV%|U~Li9UA6;jx-+Ys)O`}6Af#V4tGX}buw{q|?y z*!pw6)gPMh@c&dtk8snOs?pA`~{#aa#j>T<`CsCtDd8t=RL>WTsALq H9pLf@Ts>C? literal 0 HcmV?d00001 diff --git a/build/eu/artemis/demanes/reconfiguration/Triggerable.class b/build/eu/artemis/demanes/reconfiguration/Triggerable.class new file mode 100644 index 0000000000000000000000000000000000000000..828a7147fc3e8a0e1ee735191504efacec6082da GIT binary patch literal 233 zcmZvXO%4G;5QSeeG**r=Hq!@SW5H@dVz8AmN~b6DBdtf`Y8DRQP@;#8h}EmS)cfky z<9WLSh%k`oN%RGzvqo#S0_||L6_|uE*NUv;!kpEC3o6+wIda#NpQejhvfHc{<2a)W zshmo!mivrTH*VsCq^fPobCa{caQ$J^KIf=e7l{7AEvHp^G`hCrOjW9{lxO^&=?Vz6 U{1ZSc@U0O5Z|!(TpxgM6FG3SPt^fc4 literal 0 HcmV?d00001 diff --git a/doc/allclasses-frame.html b/doc/allclasses-frame.html new file mode 100644 index 0000000..ecc9bd9 --- /dev/null +++ b/doc/allclasses-frame.html @@ -0,0 +1,101 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +All Classes (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + +

All Classes

+
+ +
+ + diff --git a/doc/allclasses-frame.html.mine b/doc/allclasses-frame.html.mine new file mode 100644 index 0000000..d86ba2b --- /dev/null +++ b/doc/allclasses-frame.html.mine @@ -0,0 +1,72 @@ + + + + + +All Classes (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

All Classes

+ + + diff --git a/doc/allclasses-frame.html.r390 b/doc/allclasses-frame.html.r390 new file mode 100644 index 0000000..a86f6c9 --- /dev/null +++ b/doc/allclasses-frame.html.r390 @@ -0,0 +1,44 @@ + + + + + +All Classes (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + +

All Classes

+ + + diff --git a/doc/allclasses-frame.html.r409 b/doc/allclasses-frame.html.r409 new file mode 100644 index 0000000..4bcd6a9 --- /dev/null +++ b/doc/allclasses-frame.html.r409 @@ -0,0 +1,71 @@ + + + + + +All Classes (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

All Classes

+ + + diff --git a/doc/allclasses-noframe.html b/doc/allclasses-noframe.html new file mode 100644 index 0000000..616114f --- /dev/null +++ b/doc/allclasses-noframe.html @@ -0,0 +1,71 @@ + + + + + +All Classes (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

All Classes

+ + + diff --git a/doc/constant-values.html b/doc/constant-values.html new file mode 100644 index 0000000..8a1405b --- /dev/null +++ b/doc/constant-values.html @@ -0,0 +1,1344 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +Constant Field Values (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Constant Field Values

+

Contents

+ +
+
+ + +

eu.artemis.*

+ + +
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG 
    Modifier and TypeConstant FieldValue
    + +public static final java.lang.StringCONFIG_FILE"Reasoning function configuration file error"
    + +public static final java.lang.StringCONFIG_FILE_KEYNOTFOUND"Reasoning function configuration file error - Property not found"
    + +public static final java.lang.StringCONFIG_FILE_KEYNUMBERS"Reasoning function configuration file error - Invalid number of properties"
    + +public static final java.lang.StringCONFIG_FILE_POINTS_COLUMN"Reasoning function configuration file error - Points array has missing column data"
    + +public static final java.lang.StringCONFIG_FILE_POINTS_ROW_HEADER_NOTFOUND"Reasoning function configuration file error - Invalid or not found header for points array"
    + +public static final java.lang.StringCONFIG_FILE_POINTS_VALUE_NOTVALID"Reasoning function configuration file error - Invalid value in points array"
    + +public static final java.lang.StringCONFIG_FILE_POINTS_VALUES_UNSORTED"Reasoning function configuration file error - Unsorted value in points array"
    + +public static final java.lang.StringCONFIG_FILE_VALUE_NOTVALID"Reasoning function configuration file error - Invalid value for key"
    + +public static final java.lang.StringDELIM" - "
    + +public static final java.lang.StringREASONING_FUNCTION"Reasoning function error"
    + +public static final java.lang.StringVARIABLE_ERROR_ACCESS"Reasoning function error - Variable ID is not accessible"
    + +public static final java.lang.StringVARIABLE_ID_NOTFOUND"Reasoning function error - Variable ID was not found"
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY 
    Modifier and TypeConstant FieldValue
    + +public static final java.lang.StringNUMBER_OF_INPUTS"NumInputs"
    + +public static final java.lang.StringNUMBER_OF_OUTPUTS"NumOutputs"
    + +public static final java.lang.StringNUMBER_OF_POINTS"NumPoints"
    + +public static final java.lang.StringPOINTS_ARRAY"PointsArray"
    + +public static final java.lang.StringPOINTS_ROW_DELIM", "
    + +public static final java.lang.StringVAR_DELIM"_"
    + +public static final java.lang.StringVAR_ID"VarID"
    + +public static final java.lang.StringVAR_MAX"VarMAX"
    + +public static final java.lang.StringVAR_MIN"VarMIN"
    + +public static final java.lang.StringVAR_TYPE"VarType"
    + +public static final java.lang.StringVAR_TYPE_IN"IN"
    + +public static final java.lang.StringVAR_TYPE_OUT"OUT"
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable 
    Modifier and TypeConstant FieldValue
    + +public static final java.lang.StringVAR_KNORM"VarKnorm"
    + +public static final java.lang.StringVAR_NUMBER"VarNumber"
    + +public static final java.lang.StringVAR_VALUE"VarValue"
    + +public static final java.lang.StringVAR_VALUE_NORM"VarValueNorm"
    +
  • +
+ +
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor 
    Modifier and TypeConstant FieldValue
    + +public static final intCREATED2
    + +public static final intDIED4
    + +public static final intSTARTED1
    + +public static final intSUSPENDED3
    +
  • +
+
    +
  • + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee 
    Modifier and TypeConstant FieldValue
    + +public static final longBLINK_INTERVAL200L
    + +public static final longMINIMUM_INTERVAL3000L
    +
  • +
  • + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage 
    Modifier and TypeConstant FieldValue
    + +public static final intMESSAGE_LENGTH5
    +
  • +
+
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger 
    Modifier and TypeConstant FieldValue
    + +public static final byteDISABLED0
    + +public static final byteRECORD16
    + +public static final byteREMOTE32
    + +public static final byteSYSTEM_ERROR2
    + +public static final byteSYSTEM_OUTPUT1
    +
  • +
+<<<<<<< .mine + + + +======= + + + +>>>>>>> .r409 +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/constant-values.html.mine b/doc/constant-values.html.mine new file mode 100644 index 0000000..8dc41a1 --- /dev/null +++ b/doc/constant-values.html.mine @@ -0,0 +1,1200 @@ + + + + + +Constant Field Values (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Constant Field Values

+

Contents

+ +
+
+ + +

eu.artemis.*

+ + +
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG 
    Modifier and TypeConstant FieldValue
    + +public static final java.lang.StringCONFIG_FILE"Reasoning function configuration file error"
    + +public static final java.lang.StringCONFIG_FILE_KEYNOTFOUND"Reasoning function configuration file error - Property not found"
    + +public static final java.lang.StringCONFIG_FILE_KEYNUMBERS"Reasoning function configuration file error - Invalid number of properties"
    + +public static final java.lang.StringCONFIG_FILE_POINTS_COLUMN"Reasoning function configuration file error - Points array has missing column data"
    + +public static final java.lang.StringCONFIG_FILE_POINTS_ROW_HEADER_NOTFOUND"Reasoning function configuration file error - Invalid or not found header for points array"
    + +public static final java.lang.StringCONFIG_FILE_POINTS_VALUE_NOTVALID"Reasoning function configuration file error - Invalid value in points array"
    + +public static final java.lang.StringCONFIG_FILE_POINTS_VALUES_UNSORTED"Reasoning function configuration file error - Unsorted value in points array"
    + +public static final java.lang.StringCONFIG_FILE_VALUE_NOTVALID"Reasoning function configuration file error - Invalid value for key"
    + +public static final java.lang.StringDELIM" - "
    + +public static final java.lang.StringREASONING_FUNCTION"Reasoning function error"
    + +public static final java.lang.StringVARIABLE_ERROR_ACCESS"Reasoning function error - Variable ID is not accessible"
    + +public static final java.lang.StringVARIABLE_ID_NOTFOUND"Reasoning function error - Variable ID was not found"
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY 
    Modifier and TypeConstant FieldValue
    + +public static final java.lang.StringNUMBER_OF_INPUTS"NumInputs"
    + +public static final java.lang.StringNUMBER_OF_OUTPUTS"NumOutputs"
    + +public static final java.lang.StringNUMBER_OF_POINTS"NumPoints"
    + +public static final java.lang.StringPOINTS_ARRAY"PointsArray"
    + +public static final java.lang.StringPOINTS_ROW_DELIM", "
    + +public static final java.lang.StringVAR_DELIM"_"
    + +public static final java.lang.StringVAR_ID"VarID"
    + +public static final java.lang.StringVAR_MAX"VarMAX"
    + +public static final java.lang.StringVAR_MIN"VarMIN"
    + +public static final java.lang.StringVAR_TYPE"VarType"
    + +public static final java.lang.StringVAR_TYPE_IN"IN"
    + +public static final java.lang.StringVAR_TYPE_OUT"OUT"
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable 
    Modifier and TypeConstant FieldValue
    + +public static final java.lang.StringVAR_KNORM"VarKnorm"
    + +public static final java.lang.StringVAR_NUMBER"VarNumber"
    + +public static final java.lang.StringVAR_VALUE"VarValue"
    + +public static final java.lang.StringVAR_VALUE_NORM"VarValueNorm"
    +
  • +
+ +
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor 
    Modifier and TypeConstant FieldValue
    + +public static final intCREATED2
    + +public static final intDIED4
    + +public static final intSTARTED1
    + +public static final intSUSPENDED3
    +
  • +
+
    +
  • + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee 
    Modifier and TypeConstant FieldValue
    + +public static final longBLINK_INTERVAL200L
    + +public static final longMINIMUM_INTERVAL3000L
    +
  • +
  • + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage 
    Modifier and TypeConstant FieldValue
    + +public static final intMESSAGE_LENGTH5
    +
  • +
+
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger 
    Modifier and TypeConstant FieldValue
    + +public static final byteDISABLED0
    + +public static final byteRECORD16
    + +public static final byteREMOTE32
    + +public static final byteSYSTEM_ERROR2
    + +public static final byteSYSTEM_OUTPUT1
    +
  • +
+ + + +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/constant-values.html.r390 b/doc/constant-values.html.r390 new file mode 100644 index 0000000..2d8e33b --- /dev/null +++ b/doc/constant-values.html.r390 @@ -0,0 +1,662 @@ + + + + + +Constant Field Values (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Constant Field Values

+

Contents

+ +
+
+ + +

eu.artemis.*

+ + +
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor 
    Modifier and TypeConstant FieldValue
    + +public static final intCREATED2
    + +public static final intDIED4
    + +public static final intSTARTED1
    + +public static final intSUSPENDED3
    +
  • +
+
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger 
    Modifier and TypeConstant FieldValue
    + +public static final byteRECORD16
    + +public static final byteREMOTE32
    + +public static final byteSYSTEM_ERROR2
    + +public static final byteSYSTEM_OUTPUT1
    +
  • +
+
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/constant-values.html.r409 b/doc/constant-values.html.r409 new file mode 100644 index 0000000..b0b1726 --- /dev/null +++ b/doc/constant-values.html.r409 @@ -0,0 +1,1174 @@ + + + + + +Constant Field Values (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Constant Field Values

+

Contents

+ +
+
+ + +

eu.artemis.*

+ + +
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG 
    Modifier and TypeConstant FieldValue
    + +public static final java.lang.StringCONFIG_FILE"Reasoning function configuration file error"
    + +public static final java.lang.StringCONFIG_FILE_KEYNOTFOUND"Reasoning function configuration file error - Property not found"
    + +public static final java.lang.StringCONFIG_FILE_KEYNUMBERS"Reasoning function configuration file error - Invalid number of properties"
    + +public static final java.lang.StringCONFIG_FILE_POINTS_COLUMN"Reasoning function configuration file error - Points array has missing column data"
    + +public static final java.lang.StringCONFIG_FILE_POINTS_ROW_HEADER_NOTFOUND"Reasoning function configuration file error - Invalid or not found header for points array"
    + +public static final java.lang.StringCONFIG_FILE_POINTS_VALUE_NOTVALID"Reasoning function configuration file error - Invalid value in points array"
    + +public static final java.lang.StringCONFIG_FILE_POINTS_VALUES_UNSORTED"Reasoning function configuration file error - Unsorted value in points array"
    + +public static final java.lang.StringCONFIG_FILE_VALUE_NOTVALID"Reasoning function configuration file error - Invalid value for key"
    + +public static final java.lang.StringDELIM" - "
    + +public static final java.lang.StringREASONING_FUNCTION"Reasoning function error"
    + +public static final java.lang.StringVARIABLE_ERROR_ACCESS"Reasoning function error - Variable ID is not accessible"
    + +public static final java.lang.StringVARIABLE_ID_NOTFOUND"Reasoning function error - Variable ID was not found"
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY 
    Modifier and TypeConstant FieldValue
    + +public static final java.lang.StringNUMBER_OF_INPUTS"NumInputs"
    + +public static final java.lang.StringNUMBER_OF_OUTPUTS"NumOutputs"
    + +public static final java.lang.StringNUMBER_OF_POINTS"NumPoints"
    + +public static final java.lang.StringPOINTS_ARRAY"PointsArray"
    + +public static final java.lang.StringPOINTS_ROW_DELIM", "
    + +public static final java.lang.StringVAR_DELIM"_"
    + +public static final java.lang.StringVAR_ID"VarID"
    + +public static final java.lang.StringVAR_MAX"VarMAX"
    + +public static final java.lang.StringVAR_MIN"VarMIN"
    + +public static final java.lang.StringVAR_TYPE"VarType"
    + +public static final java.lang.StringVAR_TYPE_IN"IN"
    + +public static final java.lang.StringVAR_TYPE_OUT"OUT"
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable 
    Modifier and TypeConstant FieldValue
    + +public static final java.lang.StringVAR_KNORM"VarKnorm"
    + +public static final java.lang.StringVAR_NUMBER"VarNumber"
    + +public static final java.lang.StringVAR_VALUE"VarValue"
    + +public static final java.lang.StringVAR_VALUE_NORM"VarValueNorm"
    +
  • +
+ +
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor 
    Modifier and TypeConstant FieldValue
    + +public static final intCREATED2
    + +public static final intDIED4
    + +public static final intSTARTED1
    + +public static final intSUSPENDED3
    +
  • +
+
    +
  • + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee 
    Modifier and TypeConstant FieldValue
    + +public static final longBLINK_INTERVAL200L
    + +public static final longMINIMUM_INTERVAL3000L
    +
  • +
  • + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage 
    Modifier and TypeConstant FieldValue
    + +public static final intMESSAGE_LENGTH5
    +
  • +
+
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger 
    Modifier and TypeConstant FieldValue
    + +public static final byteDISABLED0
    + +public static final byteRECORD16
    + +public static final byteREMOTE32
    + +public static final byteSYSTEM_ERROR2
    + +public static final byteSYSTEM_OUTPUT1
    +
  • +
+ + + +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/deprecated-list.html b/doc/deprecated-list.html new file mode 100644 index 0000000..f07d30b --- /dev/null +++ b/doc/deprecated-list.html @@ -0,0 +1,132 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +Deprecated List (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Deprecated API

+

Contents

+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/deprecated-list.html.mine b/doc/deprecated-list.html.mine new file mode 100644 index 0000000..5c2f00d --- /dev/null +++ b/doc/deprecated-list.html.mine @@ -0,0 +1,124 @@ + + + + + +Deprecated List (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Deprecated API

+

Contents

+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/deprecated-list.html.r390 b/doc/deprecated-list.html.r390 new file mode 100644 index 0000000..22a175a --- /dev/null +++ b/doc/deprecated-list.html.r390 @@ -0,0 +1,115 @@ + + + + + +Deprecated List (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Deprecated API

+

Contents

+
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/deprecated-list.html.r409 b/doc/deprecated-list.html.r409 new file mode 100644 index 0000000..f69ef46 --- /dev/null +++ b/doc/deprecated-list.html.r409 @@ -0,0 +1,124 @@ + + + + + +Deprecated List (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Deprecated API

+

Contents

+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.html b/doc/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.html new file mode 100644 index 0000000..2b88acc --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.html @@ -0,0 +1,410 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +SunSPOTPowerController (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT
+

Class SunSPOTPowerController

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • javax.microedition.midlet.MIDlet
    • +
    • +
        +
      • eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    com.sun.spot.core.resources.transducers.ISwitchListener
    +
    +
    +
    +
    public class SunSPOTPowerController
    +extends javax.microedition.midlet.MIDlet
    +implements com.sun.spot.core.resources.transducers.ISwitchListener
    +
    The startApp method of this class is called by the VM to start the + application. + + The manifest specifies this class as MIDlet-1, which means it will be + selected for execution.
    +
    +
    Version:
    +
    1.0
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>, Huang Yuanjiang <yuanjiang.huang@upm.es>
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      protected voiddestroyApp(boolean unconditional) +
      Called if the MIDlet is terminated by the system.
      +
      com.sun.spot.core.util.Propertiesinit() 
      protected voidpauseApp() 
      protected voidstartApp() 
      voidswitchPressed(com.sun.spot.core.resources.transducers.SwitchEvent evt) 
      voidswitchReleased(com.sun.spot.core.resources.transducers.SwitchEvent evt) 
      +
        +
      • + + +

        Methods inherited from class javax.microedition.midlet.MIDlet

        +getAppProperty, notifyDestroyed, notifyPaused, resumeRequest
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SunSPOTPowerController

        +
        public SunSPOTPowerController()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        startApp

        +
        protected void startApp()
        +                 throws javax.microedition.midlet.MIDletStateChangeException
        +
        +
        Specified by:
        +
        startApp in class javax.microedition.midlet.MIDlet
        +
        Throws:
        +
        javax.microedition.midlet.MIDletStateChangeException
        +
        +
      • +
      + + + +
        +
      • +

        pauseApp

        +
        protected void pauseApp()
        +
        +
        Specified by:
        +
        pauseApp in class javax.microedition.midlet.MIDlet
        +
        +
      • +
      + + + +
        +
      • +

        destroyApp

        +
        protected void destroyApp(boolean unconditional)
        +                   throws javax.microedition.midlet.MIDletStateChangeException
        +
        Called if the MIDlet is terminated by the system. It is not called if + MIDlet.notifyDestroyed() was called.
        +
        +
        Specified by:
        +
        destroyApp in class javax.microedition.midlet.MIDlet
        +
        Parameters:
        +
        unconditional - If true the MIDlet must cleanup and release all + resources.
        +
        Throws:
        +
        javax.microedition.midlet.MIDletStateChangeException
        +
        +
      • +
      + + + +
        +
      • +

        init

        +
        public com.sun.spot.core.util.Properties init()
        +
        +
        Returns:
        +
        +
      • +
      + + + +
        +
      • +

        switchPressed

        +
        public void switchPressed(com.sun.spot.core.resources.transducers.SwitchEvent evt)
        +
        +
        Specified by:
        +
        switchPressed in interface com.sun.spot.core.resources.transducers.ISwitchListener
        +
        +
      • +
      + + + +
        +
      • +

        switchReleased

        +
        public void switchReleased(com.sun.spot.core.resources.transducers.SwitchEvent evt)
        +
        +
        Specified by:
        +
        switchReleased in interface com.sun.spot.core.resources.transducers.ISwitchListener
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.html.mine new file mode 100644 index 0000000..8fd9c5b --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.html.mine @@ -0,0 +1,402 @@ + + + + + +SunSPOTPowerController (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT
+

Class SunSPOTPowerController

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • javax.microedition.midlet.MIDlet
    • +
    • +
        +
      • eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    com.sun.spot.core.resources.transducers.ISwitchListener
    +
    +
    +
    +
    public class SunSPOTPowerController
    +extends javax.microedition.midlet.MIDlet
    +implements com.sun.spot.core.resources.transducers.ISwitchListener
    +
    The startApp method of this class is called by the VM to start the + application. + + The manifest specifies this class as MIDlet-1, which means it will be + selected for execution.
    +
    +
    Version:
    +
    1.0
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>, Huang Yuanjiang <yuanjiang.huang@upm.es>
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      protected voiddestroyApp(boolean unconditional) +
      Called if the MIDlet is terminated by the system.
      +
      com.sun.spot.core.util.Propertiesinit() 
      protected voidpauseApp() 
      protected voidstartApp() 
      voidswitchPressed(com.sun.spot.core.resources.transducers.SwitchEvent evt) 
      voidswitchReleased(com.sun.spot.core.resources.transducers.SwitchEvent evt) 
      +
        +
      • + + +

        Methods inherited from class javax.microedition.midlet.MIDlet

        +getAppProperty, notifyDestroyed, notifyPaused, resumeRequest
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SunSPOTPowerController

        +
        public SunSPOTPowerController()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        startApp

        +
        protected void startApp()
        +                 throws javax.microedition.midlet.MIDletStateChangeException
        +
        +
        Specified by:
        +
        startApp in class javax.microedition.midlet.MIDlet
        +
        Throws:
        +
        javax.microedition.midlet.MIDletStateChangeException
        +
        +
      • +
      + + + +
        +
      • +

        pauseApp

        +
        protected void pauseApp()
        +
        +
        Specified by:
        +
        pauseApp in class javax.microedition.midlet.MIDlet
        +
        +
      • +
      + + + +
        +
      • +

        destroyApp

        +
        protected void destroyApp(boolean unconditional)
        +                   throws javax.microedition.midlet.MIDletStateChangeException
        +
        Called if the MIDlet is terminated by the system. It is not called if + MIDlet.notifyDestroyed() was called.
        +
        +
        Specified by:
        +
        destroyApp in class javax.microedition.midlet.MIDlet
        +
        Parameters:
        +
        unconditional - If true the MIDlet must cleanup and release all + resources.
        +
        Throws:
        +
        javax.microedition.midlet.MIDletStateChangeException
        +
        +
      • +
      + + + +
        +
      • +

        init

        +
        public com.sun.spot.core.util.Properties init()
        +
        +
        Returns:
        +
        +
      • +
      + + + +
        +
      • +

        switchPressed

        +
        public void switchPressed(com.sun.spot.core.resources.transducers.SwitchEvent evt)
        +
        +
        Specified by:
        +
        switchPressed in interface com.sun.spot.core.resources.transducers.ISwitchListener
        +
        +
      • +
      + + + +
        +
      • +

        switchReleased

        +
        public void switchReleased(com.sun.spot.core.resources.transducers.SwitchEvent evt)
        +
        +
        Specified by:
        +
        switchReleased in interface com.sun.spot.core.resources.transducers.ISwitchListener
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.html.r390 new file mode 100644 index 0000000..2f4afab --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.html.r390 @@ -0,0 +1,334 @@ + + + + + +SunSPOTPowerController (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT
+

Class SunSPOTPowerController

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • javax.microedition.midlet.MIDlet
    • +
    • +
        +
      • eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class SunSPOTPowerController
    +extends javax.microedition.midlet.MIDlet
    +
    The startApp method of this class is called by the VM to start the + application. + + The manifest specifies this class as MIDlet-1, which means it will be + selected for execution.
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      protected voiddestroyApp(boolean unconditional) +
      Called if the MIDlet is terminated by the system.
      +
      com.sun.spot.core.util.Propertiesinit() 
      protected voidpauseApp() 
      protected voidstartApp() 
      +
        +
      • + + +

        Methods inherited from class javax.microedition.midlet.MIDlet

        +getAppProperty, notifyDestroyed, notifyPaused, resumeRequest
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SunSPOTPowerController

        +
        public SunSPOTPowerController()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        startApp

        +
        protected void startApp()
        +                 throws javax.microedition.midlet.MIDletStateChangeException
        +
        +
        Specified by:
        +
        startApp in class javax.microedition.midlet.MIDlet
        +
        Throws:
        +
        javax.microedition.midlet.MIDletStateChangeException
        +
      • +
      + + + +
        +
      • +

        pauseApp

        +
        protected void pauseApp()
        +
        +
        Specified by:
        +
        pauseApp in class javax.microedition.midlet.MIDlet
        +
        +
      • +
      + + + +
        +
      • +

        destroyApp

        +
        protected void destroyApp(boolean unconditional)
        +                   throws javax.microedition.midlet.MIDletStateChangeException
        +
        Called if the MIDlet is terminated by the system. It is not called if + MIDlet.notifyDestroyed() was called.
        +
        +
        Specified by:
        +
        destroyApp in class javax.microedition.midlet.MIDlet
        +
        Parameters:
        unconditional - If true the MIDlet must cleanup and release all + resources.
        +
        Throws:
        +
        javax.microedition.midlet.MIDletStateChangeException
        +
      • +
      + + + +
        +
      • +

        init

        +
        public com.sun.spot.core.util.Properties init()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.html.r409 new file mode 100644 index 0000000..8846003 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.html.r409 @@ -0,0 +1,402 @@ + + + + + +SunSPOTPowerController (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT
+

Class SunSPOTPowerController

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • javax.microedition.midlet.MIDlet
    • +
    • +
        +
      • eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    com.sun.spot.core.resources.transducers.ISwitchListener
    +
    +
    +
    +
    public class SunSPOTPowerController
    +extends javax.microedition.midlet.MIDlet
    +implements com.sun.spot.core.resources.transducers.ISwitchListener
    +
    The startApp method of this class is called by the VM to start the + application. + + The manifest specifies this class as MIDlet-1, which means it will be + selected for execution.
    +
    +
    Version:
    +
    1.0
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>, Huang Yuanjiang <yuanjiang.huang@upm.es>
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      protected voiddestroyApp(boolean unconditional) +
      Called if the MIDlet is terminated by the system.
      +
      com.sun.spot.core.util.Propertiesinit() 
      protected voidpauseApp() 
      protected voidstartApp() 
      voidswitchPressed(com.sun.spot.core.resources.transducers.SwitchEvent evt) 
      voidswitchReleased(com.sun.spot.core.resources.transducers.SwitchEvent evt) 
      +
        +
      • + + +

        Methods inherited from class javax.microedition.midlet.MIDlet

        +getAppProperty, notifyDestroyed, notifyPaused, resumeRequest
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SunSPOTPowerController

        +
        public SunSPOTPowerController()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        startApp

        +
        protected void startApp()
        +                 throws javax.microedition.midlet.MIDletStateChangeException
        +
        +
        Specified by:
        +
        startApp in class javax.microedition.midlet.MIDlet
        +
        Throws:
        +
        javax.microedition.midlet.MIDletStateChangeException
        +
        +
      • +
      + + + +
        +
      • +

        pauseApp

        +
        protected void pauseApp()
        +
        +
        Specified by:
        +
        pauseApp in class javax.microedition.midlet.MIDlet
        +
        +
      • +
      + + + +
        +
      • +

        destroyApp

        +
        protected void destroyApp(boolean unconditional)
        +                   throws javax.microedition.midlet.MIDletStateChangeException
        +
        Called if the MIDlet is terminated by the system. It is not called if + MIDlet.notifyDestroyed() was called.
        +
        +
        Specified by:
        +
        destroyApp in class javax.microedition.midlet.MIDlet
        +
        Parameters:
        +
        unconditional - If true the MIDlet must cleanup and release all + resources.
        +
        Throws:
        +
        javax.microedition.midlet.MIDletStateChangeException
        +
        +
      • +
      + + + +
        +
      • +

        init

        +
        public com.sun.spot.core.util.Properties init()
        +
        +
        Returns:
        +
        +
      • +
      + + + +
        +
      • +

        switchPressed

        +
        public void switchPressed(com.sun.spot.core.resources.transducers.SwitchEvent evt)
        +
        +
        Specified by:
        +
        switchPressed in interface com.sun.spot.core.resources.transducers.ISwitchListener
        +
        +
      • +
      + + + +
        +
      • +

        switchReleased

        +
        public void switchReleased(com.sun.spot.core.resources.transducers.SwitchEvent evt)
        +
        +
        Specified by:
        +
        switchReleased in interface com.sun.spot.core.resources.transducers.ISwitchListener
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/TesterForController.html b/doc/eu/artemis/demanes/impl/SunSPOT/TesterForController.html new file mode 100644 index 0000000..51fdc7d --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/TesterForController.html @@ -0,0 +1,320 @@ + + + + + +TesterForController (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT
+

Class TesterForController

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • javax.microedition.midlet.MIDlet
    • +
    • +
        +
      • eu.artemis.demanes.impl.SunSPOT.TesterForController
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class TesterForController
    +extends javax.microedition.midlet.MIDlet
    +
    The startApp method of this class is called by the VM to start the + application. + + The manifest specifies this class as MIDlet-1, which means it will + be selected for execution.
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      protected voiddestroyApp(boolean unconditional) +
      Called if the MIDlet is terminated by the system.
      +
      protected voidpauseApp() 
      protected voidstartApp() 
      +
        +
      • + + +

        Methods inherited from class javax.microedition.midlet.MIDlet

        +getAppProperty, notifyDestroyed, notifyPaused, resumeRequest
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TesterForController

        +
        public TesterForController()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        startApp

        +
        protected void startApp()
        +                 throws javax.microedition.midlet.MIDletStateChangeException
        +
        +
        Specified by:
        +
        startApp in class javax.microedition.midlet.MIDlet
        +
        Throws:
        +
        javax.microedition.midlet.MIDletStateChangeException
        +
      • +
      + + + +
        +
      • +

        pauseApp

        +
        protected void pauseApp()
        +
        +
        Specified by:
        +
        pauseApp in class javax.microedition.midlet.MIDlet
        +
        +
      • +
      + + + +
        +
      • +

        destroyApp

        +
        protected void destroyApp(boolean unconditional)
        +                   throws javax.microedition.midlet.MIDletStateChangeException
        +
        Called if the MIDlet is terminated by the system. + It is not called if MIDlet.notifyDestroyed() was called.
        +
        +
        Specified by:
        +
        destroyApp in class javax.microedition.midlet.MIDlet
        +
        Parameters:
        unconditional - If true the MIDlet must cleanup and release all resources.
        +
        Throws:
        +
        javax.microedition.midlet.MIDletStateChangeException
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/NDObservation.html b/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/NDObservation.html new file mode 100644 index 0000000..8bb3ad7 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/NDObservation.html @@ -0,0 +1,338 @@ + + + + + +NDObservation (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.TriggerPolicy
+

Class NDObservation

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.NDObservation
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.Observation
    +
    +
    +
    +
    public class NDObservation
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.Observation
    +
    Author:
    +
    grys
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      NDObservation() 
      NDObservation(java.lang.String urn) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      eu.artemis.demanes.datatypes.ANES_URNgetObservationID() +
      + Returns the unique identifier of this Observation.
      +
      java.lang.ObjectgetValue() +
      + Get the value of the observation + + + + As a generic way to have Observations monitor the system, this method + must always be called in order to have the Observation get the + information from the system as it is intended to do.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        NDObservation

        +
        public NDObservation()
        +
      • +
      + + + +
        +
      • +

        NDObservation

        +
        public NDObservation(java.lang.String urn)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getObservationID

        +
        public eu.artemis.demanes.datatypes.ANES_URN getObservationID()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Observation
        +

        + Returns the unique identifier of this Observation. +

        + +

        + Every Observation is uniquely identifiable via a ANES_URN + identifier. By obtaining this identifier, the user should be able to know + what property the Observation will observe, an what (sub)component of the + system it is observing. +

        +
        +
        Specified by:
        +
        getObservationID in interface eu.artemis.demanes.reconfiguration.Observation
        +
        Returns:
        An ANES_URN uniquely identifying the observation
        +
      • +
      + + + +
        +
      • +

        getValue

        +
        public java.lang.Object getValue()
        +                          throws eu.artemis.demanes.exceptions.ObservationInvocationException
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Observation
        +

        + Get the value of the observation +

        + +

        + As a generic way to have Observations monitor the system, this method + must always be called in order to have the Observation get the + information from the system as it is intended to do. Any other functions + of the Action may exist but will get information from the system + component. +

        +
        +
        Specified by:
        +
        getValue in interface eu.artemis.demanes.reconfiguration.Observation
        +
        Returns:
        an Object which represents the value of the observation. An + Observation may specify what type of Object is returned, but any + type of return value is possible.
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.ObservationInvocationException - If at some point in obtaining the information from the system + an error occurs, an ObservationInvocationException is thrown + indicating that the observation failed.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/PowerScalingMonitor.html b/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/PowerScalingMonitor.html new file mode 100644 index 0000000..4164869 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/PowerScalingMonitor.html @@ -0,0 +1,565 @@ + + + + + +PowerScalingMonitor (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.TriggerPolicy
+

Class PowerScalingMonitor

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.Observer, eu.artemis.demanes.reconfiguration.TriggerPolicy
    +
    +
    +
    +
    public class PowerScalingMonitor
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.TriggerPolicy, eu.artemis.demanes.reconfiguration.Observer
    +
    Author:
    +
    grys
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static intCREATED 
      static intDIED 
      static intSTARTED 
      static intSUSPENDED 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      PowerScalingMonitor(com.sun.spot.core.util.Properties reconfigurationProperties) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.util.VectorgetObservations() +
      + In order for the user to obtain all Observationss which + provide information about the system component, this function returns an + array of observations which are available.
      +
      intgetState() 
      voidregisterTriggerable(eu.artemis.demanes.reconfiguration.Triggerable t) +
      + Add a Triggerable object to the collection of objects to + trigger whenever the policy intends to do so.
      +
      voidresume() +
      + Resumes the trigger policy activity if it is suspended.
      +
      voidsetInterval(long interval) 
      voidsetState(int state) 
      voidstart() +
      + Runs the trigger policy.
      +
      voidstop() +
      + Stops the functioning of the trigger policy.
      +
      voidsuspend() +
      + Temporarily suspends the firing of the triggerable object.
      +
      voidunregisterTriggerable(eu.artemis.demanes.reconfiguration.Triggerable t) +
      + Remove a Triggerable object from the collection of objects + to trigger whenever the policy intends to do so.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PowerScalingMonitor

        +
        public PowerScalingMonitor(com.sun.spot.core.util.Properties reconfigurationProperties)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        registerTriggerable

        +
        public void registerTriggerable(eu.artemis.demanes.reconfiguration.Triggerable t)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Add a Triggerable object to the collection of objects to + trigger whenever the policy intends to do so. If the object has already + been registered before, nothing changes. +

        +
        +
        Specified by:
        +
        registerTriggerable in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        Parameters:
        t - the object to trigger
        +
      • +
      + + + +
        +
      • +

        resume

        +
        public void resume()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Resumes the trigger policy activity if it is suspended. Calling this + function when the trigger policy is stopped, or started has no effect. + Resuming may cause immediate firing of the triggerable object. +

        +
        +
        Specified by:
        +
        resume in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        +
      • +
      + + + +
        +
      • +

        start

        +
        public void start()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Runs the trigger policy. After this call, the trigger policy will + determine the conditions and regularity in which the triggerable object + will be fired. Starting may cause the immediate firing of the triggerable + object. +

        + +

        + If start is invoked and the trigger policy is not in stopped state, it + will have no effect. +

        +
        +
        Specified by:
        +
        start in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        +
      • +
      + + + +
        +
      • +

        stop

        +
        public void stop()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Stops the functioning of the trigger policy. After this method is invoked + there will be no firing of the triggerable object which was registered. + Additionally the internal state of the Triggerpolicy (if any) is cleared. +

        +
        +
        Specified by:
        +
        stop in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        +
      • +
      + + + +
        +
      • +

        suspend

        +
        public void suspend()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Temporarily suspends the firing of the triggerable object. The normal + functioning of the trigger policy must be resumed by using the resume() + method. +

        +
        +
        Specified by:
        +
        suspend in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        +
      • +
      + + + +
        +
      • +

        unregisterTriggerable

        +
        public void unregisterTriggerable(eu.artemis.demanes.reconfiguration.Triggerable t)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Remove a Triggerable object from the collection of objects + to trigger whenever the policy intends to do so. If the object was not + registered before, nothing changes +

        +
        +
        Specified by:
        +
        unregisterTriggerable in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        Parameters:
        t - the object that no longer needs to be triggered
        +
      • +
      + + + +
        +
      • +

        getObservations

        +
        public java.util.Vector getObservations()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Observer
        +

        + In order for the user to obtain all Observationss which + provide information about the system component, this function returns an + array of observations which are available. +

        + +

        + If there are no observations available this function returns null +

        +
        +
        Specified by:
        +
        getObservations in interface eu.artemis.demanes.reconfiguration.Observer
        +
        Returns:
        an Array or Observations that may be used to obtain information + about the system
        +
      • +
      + + + +
        +
      • +

        setState

        +
        public void setState(int state)
        +
      • +
      + + + +
        +
      • +

        getState

        +
        public int getState()
        +
      • +
      + + + +
        +
      • +

        setInterval

        +
        public void setInterval(long interval)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/TestControllerOuput.html b/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/TestControllerOuput.html new file mode 100644 index 0000000..87cef3b --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/TestControllerOuput.html @@ -0,0 +1,266 @@ + + + + + +TestControllerOuput (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.TriggerPolicy
+

Class TestControllerOuput

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.TestControllerOuput
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class TestControllerOuput
    +extends java.lang.Object
    +
    Author:
    +
    grys
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static int[]output 
      +
    • +
    + + + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        output

        +
        public static int[] output
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TestControllerOuput

        +
        public TestControllerOuput()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/package-frame.html new file mode 100644 index 0000000..20267c5 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/package-frame.html @@ -0,0 +1,21 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.TriggerPolicy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + +

eu.artemis.demanes.impl.SunSPOT.TriggerPolicy

+ + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/package-summary.html new file mode 100644 index 0000000..ed55c60 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/package-summary.html @@ -0,0 +1,141 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.TriggerPolicy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.TriggerPolicy

+
+
+ +
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/package-tree.html new file mode 100644 index 0000000..099b3c0 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/package-tree.html @@ -0,0 +1,130 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.TriggerPolicy Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.TriggerPolicy

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.NDObservation (implements eu.artemis.demanes.reconfiguration.Observation)
    • +
    • eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor (implements eu.artemis.demanes.reconfiguration.Observer, eu.artemis.demanes.reconfiguration.TriggerPolicy)
    • +
    • eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.TestControllerOuput
    • +
    +
  • +
+
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.html b/doc/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.html new file mode 100644 index 0000000..ab07b67 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.html @@ -0,0 +1,340 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +DEMANESResources (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class DEMANESResources

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class DEMANESResources
    +extends java.lang.Object
    +
    +
    Author:
    +
    grys
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      DEMANESResources() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DEMANESResources

        +
        public DEMANESResources()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.html.mine new file mode 100644 index 0000000..a124726 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.html.mine @@ -0,0 +1,332 @@ + + + + + +DEMANESResources (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class DEMANESResources

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class DEMANESResources
    +extends java.lang.Object
    +
    +
    Author:
    +
    grys
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      DEMANESResources() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DEMANESResources

        +
        public DEMANESResources()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.html.r390 new file mode 100644 index 0000000..62af3c4 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.html.r390 @@ -0,0 +1,309 @@ + + + + + +DEMANESResources (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class DEMANESResources

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class DEMANESResources
    +extends java.lang.Object
    +
    Author:
    +
    grys
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      DEMANESResources() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DEMANESResources

        +
        public DEMANESResources()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.html.r409 new file mode 100644 index 0000000..6ce7154 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.html.r409 @@ -0,0 +1,332 @@ + + + + + +DEMANESResources (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class DEMANESResources

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class DEMANESResources
    +extends java.lang.Object
    +
    +
    Author:
    +
    grys
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      DEMANESResources() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DEMANESResources

        +
        public DEMANESResources()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/Events.html b/doc/eu/artemis/demanes/impl/SunSPOT/common/Events.html new file mode 100644 index 0000000..9c5dd0d --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/Events.html @@ -0,0 +1,306 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +Events (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class Events

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.Events
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Events
    +extends java.lang.Object
    +
    +
    Author:
    +
    grys
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringBL_EVENT 
      static java.lang.StringND_EVENT 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      Events() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Events

        +
        public Events()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/Events.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/common/Events.html.mine new file mode 100644 index 0000000..af6a495 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/Events.html.mine @@ -0,0 +1,298 @@ + + + + + +Events (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class Events

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.Events
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Events
    +extends java.lang.Object
    +
    +
    Author:
    +
    grys
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringBL_EVENT 
      static java.lang.StringND_EVENT 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      Events() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Events

        +
        public Events()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/Events.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/common/Events.html.r390 new file mode 100644 index 0000000..5cd1a3f --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/Events.html.r390 @@ -0,0 +1,281 @@ + + + + + +Events (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class Events

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.Events
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Events
    +extends java.lang.Object
    +
    Author:
    +
    grys
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringBL_EVENT 
      static java.lang.StringND_EVENT 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      Events() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Events

        +
        public Events()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/Events.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/common/Events.html.r409 new file mode 100644 index 0000000..94aaf22 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/Events.html.r409 @@ -0,0 +1,298 @@ + + + + + +Events (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class Events

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.Events
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Events
    +extends java.lang.Object
    +
    +
    Author:
    +
    grys
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringBL_EVENT 
      static java.lang.StringND_EVENT 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      Events() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Events

        +
        public Events()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.html b/doc/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.html new file mode 100644 index 0000000..500dd2a --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.html @@ -0,0 +1,289 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +MediatorProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class MediatorProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.MediatorProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class MediatorProperties
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      MediatorProperties() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        UPDATE_LIST_BEHAVIOUR_PROPERTY

        +
        public static final java.lang.String UPDATE_LIST_BEHAVIOUR_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        MediatorProperties

        +
        public MediatorProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.html.mine new file mode 100644 index 0000000..b2b3dc2 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.html.mine @@ -0,0 +1,281 @@ + + + + + +MediatorProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class MediatorProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.MediatorProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class MediatorProperties
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      MediatorProperties() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        UPDATE_LIST_BEHAVIOUR_PROPERTY

        +
        public static final java.lang.String UPDATE_LIST_BEHAVIOUR_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        MediatorProperties

        +
        public MediatorProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.html.r390 new file mode 100644 index 0000000..e01e6e6 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.html.r390 @@ -0,0 +1,267 @@ + + + + + +MediatorProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class MediatorProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.MediatorProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class MediatorProperties
    +extends java.lang.Object
    +
    Author:
    +
    Néstor Lucas Martínez
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      MediatorProperties() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        UPDATE_LIST_BEHAVIOUR_PROPERTY

        +
        public static final java.lang.String UPDATE_LIST_BEHAVIOUR_PROPERTY
        +
        See Also:
        Constant Field Values
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        MediatorProperties

        +
        public MediatorProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.html.r409 new file mode 100644 index 0000000..caefc31 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.html.r409 @@ -0,0 +1,281 @@ + + + + + +MediatorProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class MediatorProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.MediatorProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class MediatorProperties
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      MediatorProperties() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        UPDATE_LIST_BEHAVIOUR_PROPERTY

        +
        public static final java.lang.String UPDATE_LIST_BEHAVIOUR_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        MediatorProperties

        +
        public MediatorProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.html b/doc/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.html new file mode 100644 index 0000000..88b058e --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.html @@ -0,0 +1,289 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +PTActionProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class PTActionProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.PTActionProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class PTActionProperties
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringCR0_PROPERTY 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      PTActionProperties() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PTActionProperties

        +
        public PTActionProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.html.mine new file mode 100644 index 0000000..1fde269 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.html.mine @@ -0,0 +1,281 @@ + + + + + +PTActionProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class PTActionProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.PTActionProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class PTActionProperties
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringCR0_PROPERTY 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      PTActionProperties() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PTActionProperties

        +
        public PTActionProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.html.r390 new file mode 100644 index 0000000..36f96da --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.html.r390 @@ -0,0 +1,267 @@ + + + + + +PTActionProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class PTActionProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.PTActionProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class PTActionProperties
    +extends java.lang.Object
    +
    Author:
    +
    Néstor Lucas Martínez
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringCR0_PROPERTY 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      PTActionProperties() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PTActionProperties

        +
        public PTActionProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.html.r409 new file mode 100644 index 0000000..427e20a --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.html.r409 @@ -0,0 +1,281 @@ + + + + + +PTActionProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class PTActionProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.PTActionProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class PTActionProperties
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringCR0_PROPERTY 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      PTActionProperties() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PTActionProperties

        +
        public PTActionProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/RadioProperties.html b/doc/eu/artemis/demanes/impl/SunSPOT/common/RadioProperties.html new file mode 100644 index 0000000..b8024eb --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/RadioProperties.html @@ -0,0 +1,522 @@ + + + + + +RadioProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class RadioProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class RadioProperties
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      RadioProperties() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static intgetMaximumPTX(int channel) 
      static intgetMaximumPTXIndex(int channel) +
      Static method to obtain the maximum index in the available transmission + powers array.
      +
      static intgetMinimumPTX(int channel) 
      static intgetMinimumPTXIndex(int channel) +
      Static method to obtain the minimum index in the available transmission + powers array.
      +
      static intgetPTX() +
      Static method to obtain the actual transmission power.
      +
      static intgetPTXatIndex(int channel, + int index) +
      Static method to obtain the transmission power given an index.
      +
      static intgetPTXIndex(int channel, + int ptx) +
      Static method to obtain the index of a given power of transmission + related to the REAL available ones.
      +
      static intgetRadioChannel() +
      Static method to obtain the actual radio channel in use.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        MINIMUM_POWER_TRANSMISSION

        +
        public static final int MINIMUM_POWER_TRANSMISSION
        +
        The minimum power of transmission in dBm.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        MAXIMUM_POWER_TRANSMISSION

        +
        public static final int MAXIMUM_POWER_TRANSMISSION
        +
        The maximum power of transmission in dBm.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        RADIO_PROPERTIES_ERROR

        +
        public static final int RADIO_PROPERTIES_ERROR
        +
        ERROR CONSTANT.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        RadioProperties

        +
        public RadioProperties()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getMaximumPTXIndex

        +
        public static int getMaximumPTXIndex(int channel)
        +
        Static method to obtain the maximum index in the available transmission + powers array.
        +
        +
        Parameters:
        +
        channel - The channel for which the maximum index is required.
        +
        Returns:
        +
        The maximum index fir the requested channel.
        +
        +
      • +
      + + + +
        +
      • +

        getMinimumPTXIndex

        +
        public static int getMinimumPTXIndex(int channel)
        +
        Static method to obtain the minimum index in the available transmission + powers array. It will always be 0, so this method is just to complement + the getMaximumPTXIndex.
        +
        +
        Parameters:
        +
        channel - The channel for which the maximum index is required.
        +
        Returns:
        +
        The maximum index fir the requested channel.
        +
        +
      • +
      + + + +
        +
      • +

        getPTXIndex

        +
        public static int getPTXIndex(int channel,
        +                              int ptx)
        +
        Static method to obtain the index of a given power of transmission + related to the REAL available ones.
        +
        +
        Parameters:
        +
        channel - The channel for which the request is done.
        +
        ptx - The transmission power which is asked for
        +
        Returns:
        +
        The index of the transmission power in the list
        +
        +
      • +
      + + + +
        +
      • +

        getPTXatIndex

        +
        public static int getPTXatIndex(int channel,
        +                                int index)
        +
        Static method to obtain the transmission power given an index.
        +
        +
        Parameters:
        +
        channel - The chanel for which the request is done.
        +
        index - The index of the desired transmission power.
        +
        Returns:
        +
        The desire transmission power, or RADIO_PROPERTIES_ERROR if the index is out of bounds.
        +
        +
      • +
      + + + +
        +
      • +

        getRadioChannel

        +
        public static int getRadioChannel()
        +
        Static method to obtain the actual radio channel in use.
        +
        +
        Returns:
        +
        The actual radio channel in use.
        +
        +
      • +
      + + + +
        +
      • +

        getPTX

        +
        public static int getPTX()
        +
        Static method to obtain the actual transmission power.
        +
        +
        Returns:
        +
        The actual transmission power.
        +
        +
      • +
      + + + +
        +
      • +

        getMaximumPTX

        +
        public static int getMaximumPTX(int channel)
        +
        +
        Parameters:
        +
        channel -
        +
        Returns:
        +
        +
      • +
      + + + +
        +
      • +

        getMinimumPTX

        +
        public static int getMinimumPTX(int channel)
        +
        +
        Parameters:
        +
        channel -
        +
        Returns:
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.html b/doc/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.html new file mode 100644 index 0000000..9fc0b64 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.html @@ -0,0 +1,510 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +ReasonerProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class ReasonerProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ReasonerProperties
    +extends java.lang.Object
    +
    +
    Author:
    +
    grys
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        KE_PROPERTY

        +
        public static final java.lang.String KE_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        KdeltaND_PROPERTY

        +
        public static final java.lang.String KdeltaND_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        NDinitPROPERTY

        +
        public static final java.lang.String NDinitPROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        NDRefPROPERTY

        +
        public static final java.lang.String NDRefPROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        ND_R_PROPERTY_NAME

        +
        public static final java.lang.String ND_R_PROPERTY_NAME
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        KND_PROPERTY

        +
        public static final java.lang.String KND_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        KCR_PROPERTY

        +
        public static final java.lang.String KCR_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        E_CR_PROPERTY

        +
        public static final java.lang.String E_CR_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        e_ND_ID_PROPERTY

        +
        public static final java.lang.String e_ND_ID_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        e_E_ID_PROPERTY

        +
        public static final java.lang.String e_E_ID_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        du_ND_ID_PROPERTY

        +
        public static final java.lang.String du_ND_ID_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        du_CR_ID_PROPERTY

        +
        public static final java.lang.String du_CR_ID_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        FDM_PRIM_CONFIG_PROPERTY

        +
        public static final java.lang.String FDM_PRIM_CONFIG_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        FDM_SEC_CONFIG_PROPERTY

        +
        public static final java.lang.String FDM_SEC_CONFIG_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ReasonerProperties

        +
        public ReasonerProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.html.mine new file mode 100644 index 0000000..da3d772 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.html.mine @@ -0,0 +1,502 @@ + + + + + +ReasonerProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class ReasonerProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ReasonerProperties
    +extends java.lang.Object
    +
    +
    Author:
    +
    grys
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        KE_PROPERTY

        +
        public static final java.lang.String KE_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        KdeltaND_PROPERTY

        +
        public static final java.lang.String KdeltaND_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        NDinitPROPERTY

        +
        public static final java.lang.String NDinitPROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        NDRefPROPERTY

        +
        public static final java.lang.String NDRefPROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        ND_R_PROPERTY_NAME

        +
        public static final java.lang.String ND_R_PROPERTY_NAME
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        KND_PROPERTY

        +
        public static final java.lang.String KND_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        KCR_PROPERTY

        +
        public static final java.lang.String KCR_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        E_CR_PROPERTY

        +
        public static final java.lang.String E_CR_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        e_ND_ID_PROPERTY

        +
        public static final java.lang.String e_ND_ID_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        e_E_ID_PROPERTY

        +
        public static final java.lang.String e_E_ID_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        du_ND_ID_PROPERTY

        +
        public static final java.lang.String du_ND_ID_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        du_CR_ID_PROPERTY

        +
        public static final java.lang.String du_CR_ID_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        FDM_PRIM_CONFIG_PROPERTY

        +
        public static final java.lang.String FDM_PRIM_CONFIG_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        FDM_SEC_CONFIG_PROPERTY

        +
        public static final java.lang.String FDM_SEC_CONFIG_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ReasonerProperties

        +
        public ReasonerProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.html.r390 new file mode 100644 index 0000000..5200c66 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.html.r390 @@ -0,0 +1,351 @@ + + + + + +ReasonerProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class ReasonerProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ReasonerProperties
    +extends java.lang.Object
    +
    Author:
    +
    grys
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      ReasonerProperties() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+ +
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.html.r409 new file mode 100644 index 0000000..9dc5a10 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.html.r409 @@ -0,0 +1,502 @@ + + + + + +ReasonerProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class ReasonerProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ReasonerProperties
    +extends java.lang.Object
    +
    +
    Author:
    +
    grys
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        KE_PROPERTY

        +
        public static final java.lang.String KE_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        KdeltaND_PROPERTY

        +
        public static final java.lang.String KdeltaND_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        NDinitPROPERTY

        +
        public static final java.lang.String NDinitPROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        NDRefPROPERTY

        +
        public static final java.lang.String NDRefPROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        ND_R_PROPERTY_NAME

        +
        public static final java.lang.String ND_R_PROPERTY_NAME
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        KND_PROPERTY

        +
        public static final java.lang.String KND_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        KCR_PROPERTY

        +
        public static final java.lang.String KCR_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        E_CR_PROPERTY

        +
        public static final java.lang.String E_CR_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        e_ND_ID_PROPERTY

        +
        public static final java.lang.String e_ND_ID_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        e_E_ID_PROPERTY

        +
        public static final java.lang.String e_E_ID_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        du_ND_ID_PROPERTY

        +
        public static final java.lang.String du_ND_ID_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        du_CR_ID_PROPERTY

        +
        public static final java.lang.String du_CR_ID_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        FDM_PRIM_CONFIG_PROPERTY

        +
        public static final java.lang.String FDM_PRIM_CONFIG_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        FDM_SEC_CONFIG_PROPERTY

        +
        public static final java.lang.String FDM_SEC_CONFIG_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ReasonerProperties

        +
        public ReasonerProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.html b/doc/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.html new file mode 100644 index 0000000..56706ef --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.html @@ -0,0 +1,340 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +ReconfigurationResources (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class ReconfigurationResources

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ReconfigurationResources
    +extends java.lang.Object
    +
    +
    Author:
    +
    grys
    +
    +
  • +
+
+
+
    +
  • + + + + + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ReconfigurationResources

        +
        public ReconfigurationResources()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.html.mine new file mode 100644 index 0000000..c68f286 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.html.mine @@ -0,0 +1,332 @@ + + + + + +ReconfigurationResources (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class ReconfigurationResources

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ReconfigurationResources
    +extends java.lang.Object
    +
    +
    Author:
    +
    grys
    +
    +
  • +
+
+
+
    +
  • + + + + + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ReconfigurationResources

        +
        public ReconfigurationResources()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.html.r390 new file mode 100644 index 0000000..17da6b1 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.html.r390 @@ -0,0 +1,309 @@ + + + + + +ReconfigurationResources (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class ReconfigurationResources

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ReconfigurationResources
    +extends java.lang.Object
    +
    Author:
    +
    grys
    +
  • +
+
+
+
    +
  • + + + + + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ReconfigurationResources

        +
        public ReconfigurationResources()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.html.r409 new file mode 100644 index 0000000..ce94b13 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationResources.html.r409 @@ -0,0 +1,332 @@ + + + + + +ReconfigurationResources (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class ReconfigurationResources

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ReconfigurationResources
    +extends java.lang.Object
    +
    +
    Author:
    +
    grys
    +
    +
  • +
+
+
+
    +
  • + + + + + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ReconfigurationResources

        +
        public ReconfigurationResources()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/SystemContext.html b/doc/eu/artemis/demanes/impl/SunSPOT/common/SystemContext.html new file mode 100644 index 0000000..7351c2e --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/SystemContext.html @@ -0,0 +1,327 @@ + + + + + +SystemContext (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class SystemContext

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.SystemContext
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class SystemContext
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+ +
+
+ +
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.html b/doc/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.html new file mode 100644 index 0000000..bc36fb4 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.html @@ -0,0 +1,489 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +SystemProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class SystemProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class SystemProperties
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringBS_ADDRESS_STRING +
      Basestation address for Den Haag video.
      +
      static longBS_ADDRESSS_LONG 
      static intFIRST_LED +
      The first LED index for the LEDs array.
      +
      static java.lang.StringIEEE_ADDRESS +
      The SunSPOT property name for its IEEE address, "spot.address".
      +
      static java.lang.StringIEEE_ADDRESS_VALUE +
      The SunSPOT IEEE Address.
      +
      static intLAST_LED +
      The last LED index for the LEDs array.
      +
      static java.lang.StringLOG_DESTINATION +
      The log destination property name, "log.destination".
      +
      static java.lang.StringLOG_DESTINATION_VALUE +
      The default log destination (STDOUT) for the whole application.
      +
      static java.lang.StringLOG_LEVEL +
      The log level property name, "log.level".
      +
      static java.lang.StringLOG_LEVEL_VALUE +
      The default log level (ALL) for the whole application.
      +
      static java.lang.StringSPOT_URN_NSS +
      The SunSPOT property name for the NSS part for construction any URN, "urn.nss.spotpart".
      +
      static java.lang.StringSPOT_URN_NSS_VALUE +
      The default value for the NSS part for construction any URN, "SunSPOT" + last four bytes of IEEE address.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      SystemProperties() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        IEEE_ADDRESS

        +
        public static final java.lang.String IEEE_ADDRESS
        +
        The SunSPOT property name for its IEEE address, "spot.address".
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        SPOT_URN_NSS

        +
        public static final java.lang.String SPOT_URN_NSS
        +
        The SunSPOT property name for the NSS part for construction any URN, "urn.nss.spotpart".
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        LOG_LEVEL

        +
        public static final java.lang.String LOG_LEVEL
        +
        The log level property name, "log.level".
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        LOG_DESTINATION

        +
        public static final java.lang.String LOG_DESTINATION
        +
        The log destination property name, "log.destination".
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        IEEE_ADDRESS_VALUE

        +
        public static final java.lang.String IEEE_ADDRESS_VALUE
        +
        The SunSPOT IEEE Address.
        +
      • +
      + + + +
        +
      • +

        SPOT_URN_NSS_VALUE

        +
        public static final java.lang.String SPOT_URN_NSS_VALUE
        +
        The default value for the NSS part for construction any URN, "SunSPOT" + last four bytes of IEEE address.
        +
      • +
      + + + +
        +
      • +

        LOG_LEVEL_VALUE

        +
        public static final java.lang.String LOG_LEVEL_VALUE
        +
        The default log level (ALL) for the whole application.
        +
      • +
      + + + +
        +
      • +

        LOG_DESTINATION_VALUE

        +
        public static final java.lang.String LOG_DESTINATION_VALUE
        +
        The default log destination (STDOUT) for the whole application.
        +
      • +
      + + + +
        +
      • +

        FIRST_LED

        +
        public static final int FIRST_LED
        +
        The first LED index for the LEDs array.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        LAST_LED

        +
        public static final int LAST_LED
        +
        The last LED index for the LEDs array.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        BS_ADDRESS_STRING

        +
        public static final java.lang.String BS_ADDRESS_STRING
        +
        Basestation address for Den Haag video.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        BS_ADDRESSS_LONG

        +
        public static final long BS_ADDRESSS_LONG
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SystemProperties

        +
        public SystemProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.html.mine new file mode 100644 index 0000000..b1941b9 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.html.mine @@ -0,0 +1,481 @@ + + + + + +SystemProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class SystemProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class SystemProperties
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringBS_ADDRESS_STRING +
      Basestation address for Den Haag video.
      +
      static longBS_ADDRESSS_LONG 
      static intFIRST_LED +
      The first LED index for the LEDs array.
      +
      static java.lang.StringIEEE_ADDRESS +
      The SunSPOT property name for its IEEE address, "spot.address".
      +
      static java.lang.StringIEEE_ADDRESS_VALUE +
      The SunSPOT IEEE Address.
      +
      static intLAST_LED +
      The last LED index for the LEDs array.
      +
      static java.lang.StringLOG_DESTINATION +
      The log destination property name, "log.destination".
      +
      static java.lang.StringLOG_DESTINATION_VALUE +
      The default log destination (STDOUT) for the whole application.
      +
      static java.lang.StringLOG_LEVEL +
      The log level property name, "log.level".
      +
      static java.lang.StringLOG_LEVEL_VALUE +
      The default log level (ALL) for the whole application.
      +
      static java.lang.StringSPOT_URN_NSS +
      The SunSPOT property name for the NSS part for construction any URN, "urn.nss.spotpart".
      +
      static java.lang.StringSPOT_URN_NSS_VALUE +
      The default value for the NSS part for construction any URN, "SunSPOT" + last four bytes of IEEE address.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      SystemProperties() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        IEEE_ADDRESS

        +
        public static final java.lang.String IEEE_ADDRESS
        +
        The SunSPOT property name for its IEEE address, "spot.address".
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        SPOT_URN_NSS

        +
        public static final java.lang.String SPOT_URN_NSS
        +
        The SunSPOT property name for the NSS part for construction any URN, "urn.nss.spotpart".
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        LOG_LEVEL

        +
        public static final java.lang.String LOG_LEVEL
        +
        The log level property name, "log.level".
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        LOG_DESTINATION

        +
        public static final java.lang.String LOG_DESTINATION
        +
        The log destination property name, "log.destination".
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        IEEE_ADDRESS_VALUE

        +
        public static final java.lang.String IEEE_ADDRESS_VALUE
        +
        The SunSPOT IEEE Address.
        +
      • +
      + + + +
        +
      • +

        SPOT_URN_NSS_VALUE

        +
        public static final java.lang.String SPOT_URN_NSS_VALUE
        +
        The default value for the NSS part for construction any URN, "SunSPOT" + last four bytes of IEEE address.
        +
      • +
      + + + +
        +
      • +

        LOG_LEVEL_VALUE

        +
        public static final java.lang.String LOG_LEVEL_VALUE
        +
        The default log level (ALL) for the whole application.
        +
      • +
      + + + +
        +
      • +

        LOG_DESTINATION_VALUE

        +
        public static final java.lang.String LOG_DESTINATION_VALUE
        +
        The default log destination (STDOUT) for the whole application.
        +
      • +
      + + + +
        +
      • +

        FIRST_LED

        +
        public static final int FIRST_LED
        +
        The first LED index for the LEDs array.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        LAST_LED

        +
        public static final int LAST_LED
        +
        The last LED index for the LEDs array.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        BS_ADDRESS_STRING

        +
        public static final java.lang.String BS_ADDRESS_STRING
        +
        Basestation address for Den Haag video.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        BS_ADDRESSS_LONG

        +
        public static final long BS_ADDRESSS_LONG
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SystemProperties

        +
        public SystemProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.html.r390 new file mode 100644 index 0000000..9bf1e24 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.html.r390 @@ -0,0 +1,308 @@ + + + + + +SystemProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class SystemProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class SystemProperties
    +extends java.lang.Object
    +
    Author:
    +
    Néstor Lucas Martínez
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      SystemProperties() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + + + + + +
        +
      • +

        IEEE_ADDRESS_VALUE

        +
        public static final java.lang.String IEEE_ADDRESS_VALUE
        +
      • +
      + + + +
        +
      • +

        MINIMUM_POWER_TRANSMISSION

        +
        public static final int MINIMUM_POWER_TRANSMISSION
        +
        See Also:
        Constant Field Values
        +
      • +
      + + + +
        +
      • +

        MAXIMUM_POWER_TRANSMISSION

        +
        public static final int MAXIMUM_POWER_TRANSMISSION
        +
        See Also:
        Constant Field Values
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SystemProperties

        +
        public SystemProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.html.r409 new file mode 100644 index 0000000..8200234 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.html.r409 @@ -0,0 +1,481 @@ + + + + + +SystemProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class SystemProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class SystemProperties
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringBS_ADDRESS_STRING +
      Basestation address for Den Haag video.
      +
      static longBS_ADDRESSS_LONG 
      static intFIRST_LED +
      The first LED index for the LEDs array.
      +
      static java.lang.StringIEEE_ADDRESS +
      The SunSPOT property name for its IEEE address, "spot.address".
      +
      static java.lang.StringIEEE_ADDRESS_VALUE +
      The SunSPOT IEEE Address.
      +
      static intLAST_LED +
      The last LED index for the LEDs array.
      +
      static java.lang.StringLOG_DESTINATION +
      The log destination property name, "log.destination".
      +
      static java.lang.StringLOG_DESTINATION_VALUE +
      The default log destination (STDOUT) for the whole application.
      +
      static java.lang.StringLOG_LEVEL +
      The log level property name, "log.level".
      +
      static java.lang.StringLOG_LEVEL_VALUE +
      The default log level (ALL) for the whole application.
      +
      static java.lang.StringSPOT_URN_NSS +
      The SunSPOT property name for the NSS part for construction any URN, "urn.nss.spotpart".
      +
      static java.lang.StringSPOT_URN_NSS_VALUE +
      The default value for the NSS part for construction any URN, "SunSPOT" + last four bytes of IEEE address.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      SystemProperties() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        IEEE_ADDRESS

        +
        public static final java.lang.String IEEE_ADDRESS
        +
        The SunSPOT property name for its IEEE address, "spot.address".
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        SPOT_URN_NSS

        +
        public static final java.lang.String SPOT_URN_NSS
        +
        The SunSPOT property name for the NSS part for construction any URN, "urn.nss.spotpart".
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        LOG_LEVEL

        +
        public static final java.lang.String LOG_LEVEL
        +
        The log level property name, "log.level".
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        LOG_DESTINATION

        +
        public static final java.lang.String LOG_DESTINATION
        +
        The log destination property name, "log.destination".
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        IEEE_ADDRESS_VALUE

        +
        public static final java.lang.String IEEE_ADDRESS_VALUE
        +
        The SunSPOT IEEE Address.
        +
      • +
      + + + +
        +
      • +

        SPOT_URN_NSS_VALUE

        +
        public static final java.lang.String SPOT_URN_NSS_VALUE
        +
        The default value for the NSS part for construction any URN, "SunSPOT" + last four bytes of IEEE address.
        +
      • +
      + + + +
        +
      • +

        LOG_LEVEL_VALUE

        +
        public static final java.lang.String LOG_LEVEL_VALUE
        +
        The default log level (ALL) for the whole application.
        +
      • +
      + + + +
        +
      • +

        LOG_DESTINATION_VALUE

        +
        public static final java.lang.String LOG_DESTINATION_VALUE
        +
        The default log destination (STDOUT) for the whole application.
        +
      • +
      + + + +
        +
      • +

        FIRST_LED

        +
        public static final int FIRST_LED
        +
        The first LED index for the LEDs array.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        LAST_LED

        +
        public static final int LAST_LED
        +
        The last LED index for the LEDs array.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        BS_ADDRESS_STRING

        +
        public static final java.lang.String BS_ADDRESS_STRING
        +
        Basestation address for Den Haag video.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        BS_ADDRESSS_LONG

        +
        public static final long BS_ADDRESSS_LONG
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SystemProperties

        +
        public SystemProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.html b/doc/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.html new file mode 100644 index 0000000..6b876b0 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.html @@ -0,0 +1,391 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +TriggerPolicyProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class TriggerPolicyProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class TriggerPolicyProperties
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        TRIGGER_INTERVAL_PROPERTY

        +
        public static final java.lang.String TRIGGER_INTERVAL_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        KSI_ND_PROPERTY_NAME

        +
        public static final java.lang.String KSI_ND_PROPERTY_NAME
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        ND_MIN_PROPERTY

        +
        public static final java.lang.String ND_MIN_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        CR_MAX_PROPERTY

        +
        public static final java.lang.String CR_MAX_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        CR_MIN_PROPERTY

        +
        public static final java.lang.String CR_MIN_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        DELTA_ND_MIN_PROPERTY

        +
        public static final java.lang.String DELTA_ND_MIN_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        DELTA_CR_MIN_PROPERTY

        +
        public static final java.lang.String DELTA_CR_MIN_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TriggerPolicyProperties

        +
        public TriggerPolicyProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.html.mine new file mode 100644 index 0000000..428d3aa --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.html.mine @@ -0,0 +1,383 @@ + + + + + +TriggerPolicyProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class TriggerPolicyProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class TriggerPolicyProperties
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        TRIGGER_INTERVAL_PROPERTY

        +
        public static final java.lang.String TRIGGER_INTERVAL_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        KSI_ND_PROPERTY_NAME

        +
        public static final java.lang.String KSI_ND_PROPERTY_NAME
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        ND_MIN_PROPERTY

        +
        public static final java.lang.String ND_MIN_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        CR_MAX_PROPERTY

        +
        public static final java.lang.String CR_MAX_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        CR_MIN_PROPERTY

        +
        public static final java.lang.String CR_MIN_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        DELTA_ND_MIN_PROPERTY

        +
        public static final java.lang.String DELTA_ND_MIN_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        DELTA_CR_MIN_PROPERTY

        +
        public static final java.lang.String DELTA_CR_MIN_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TriggerPolicyProperties

        +
        public TriggerPolicyProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.html.r390 new file mode 100644 index 0000000..d4f0834 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.html.r390 @@ -0,0 +1,337 @@ + + + + + +TriggerPolicyProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class TriggerPolicyProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class TriggerPolicyProperties
    +extends java.lang.Object
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
  • +
+
+
+ +
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TriggerPolicyProperties

        +
        public TriggerPolicyProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.html.r409 new file mode 100644 index 0000000..ebe20d1 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.html.r409 @@ -0,0 +1,383 @@ + + + + + +TriggerPolicyProperties (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.common
+

Class TriggerPolicyProperties

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class TriggerPolicyProperties
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        TRIGGER_INTERVAL_PROPERTY

        +
        public static final java.lang.String TRIGGER_INTERVAL_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        KSI_ND_PROPERTY_NAME

        +
        public static final java.lang.String KSI_ND_PROPERTY_NAME
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        ND_MIN_PROPERTY

        +
        public static final java.lang.String ND_MIN_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        CR_MAX_PROPERTY

        +
        public static final java.lang.String CR_MAX_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        CR_MIN_PROPERTY

        +
        public static final java.lang.String CR_MIN_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        DELTA_ND_MIN_PROPERTY

        +
        public static final java.lang.String DELTA_ND_MIN_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        DELTA_CR_MIN_PROPERTY

        +
        public static final java.lang.String DELTA_CR_MIN_PROPERTY
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TriggerPolicyProperties

        +
        public TriggerPolicyProperties()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-frame.html new file mode 100644 index 0000000..85f86db --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-frame.html @@ -0,0 +1,37 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT.common (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + +

eu.artemis.demanes.impl.SunSPOT.common

+ + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/package-frame.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-frame.html.mine new file mode 100644 index 0000000..4fa7845 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-frame.html.mine @@ -0,0 +1,29 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.common (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.common

+ + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/package-frame.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-frame.html.r390 new file mode 100644 index 0000000..77bf1a5 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-frame.html.r390 @@ -0,0 +1,26 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.common (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + +

eu.artemis.demanes.impl.SunSPOT.common

+ + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/package-frame.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-frame.html.r409 new file mode 100644 index 0000000..9247179 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-frame.html.r409 @@ -0,0 +1,29 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.common (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.common

+ + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-summary.html new file mode 100644 index 0000000..7a9eeff --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-summary.html @@ -0,0 +1,186 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT.common (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.common

+
+
+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/package-summary.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-summary.html.mine new file mode 100644 index 0000000..2dca64a --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-summary.html.mine @@ -0,0 +1,178 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.common (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.common

+
+
+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/package-summary.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-summary.html.r390 new file mode 100644 index 0000000..6f05f23 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-summary.html.r390 @@ -0,0 +1,161 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.common (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.common

+
+
+ +
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/package-summary.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-summary.html.r409 new file mode 100644 index 0000000..2c0e4cf --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-summary.html.r409 @@ -0,0 +1,178 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.common (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.common

+
+
+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-tree.html new file mode 100644 index 0000000..4674264 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-tree.html @@ -0,0 +1,154 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT.common Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.common

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/package-tree.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-tree.html.mine new file mode 100644 index 0000000..0a524e6 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-tree.html.mine @@ -0,0 +1,146 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.common Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.common

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/package-tree.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-tree.html.r390 new file mode 100644 index 0000000..8641a1d --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-tree.html.r390 @@ -0,0 +1,135 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.common Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.common

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/common/package-tree.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-tree.html.r409 new file mode 100644 index 0000000..554b301 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/common/package-tree.html.r409 @@ -0,0 +1,146 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.common Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.common

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationListener.html b/doc/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationListener.html new file mode 100644 index 0000000..b81678d --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationListener.html @@ -0,0 +1,235 @@ + + + + + +CommunicationListener (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.communications
+

Interface CommunicationListener

+
+
+
+
    +
  • +
    +
    +
    public interface CommunicationListener
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      All Methods Instance Methods Abstract Methods 
      Modifier and TypeMethod and Description
      voidCallbackFunction(java.lang.String message, + int size, + int mode, + java.lang.String destination, + int priority, + int importance) 
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        CallbackFunction

        +
        void CallbackFunction(java.lang.String message,
        +                      int size,
        +                      int mode,
        +                      java.lang.String destination,
        +                      int priority,
        +                      int importance)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager.html b/doc/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager.html new file mode 100644 index 0000000..2e6d8f4 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager.html @@ -0,0 +1,451 @@ + + + + + +CommunicationManager (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.communications
+

Class CommunicationManager

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class CommunicationManager
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+ +
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CommunicationManager

        +
        public CommunicationManager(SystemContext context)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        send

        +
        public boolean send(java.io.ByteArrayOutputStream message,
        +                    int size,
        +                    int mode,
        +                    java.lang.String destination,
        +                    int priority,
        +                    int importance)
        +
      • +
      + + + + + + + + + + + +
        +
      • +

        resolveDestination

        +
        public eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager.RadiogramAddress resolveDestination(java.lang.String destination)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/communications/RoutingListener.html b/doc/eu/artemis/demanes/impl/SunSPOT/communications/RoutingListener.html new file mode 100644 index 0000000..26d5d92 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/communications/RoutingListener.html @@ -0,0 +1,424 @@ + + + + + +RoutingListener (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.communications
+

Class RoutingListener

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    com.sun.spot.multihop.radio.IDataEventListener, com.sun.spot.multihop.radio.mhrp.interfaces.ILQRPEventListener
    +
    +
    +
    +
    public class RoutingListener
    +extends java.lang.Object
    +implements com.sun.spot.multihop.radio.mhrp.interfaces.ILQRPEventListener, com.sun.spot.multihop.radio.IDataEventListener
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidnotifyForward(long lastHop, + long nextHop, + long originator, + long destination) 
      voidRERRReceived(long l, + long l1) 
      voidRERRSent(long l, + long l1) 
      voidRREPReceived(long l, + long l1, + long l2, + int i, + double d) 
      voidRREPSent(long l, + long l1, + int i, + double d) 
      voidRREQReceived(long l, + long l1, + long l2, + int i, + double d) 
      voidRREQSent(long l, + long l1, + int i, + double d) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        RoutingListener

        +
        public RoutingListener(SystemContext context)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        RREQSent

        +
        public void RREQSent(long l,
        +                     long l1,
        +                     int i,
        +                     double d)
        +
        +
        Specified by:
        +
        RREQSent in interface com.sun.spot.multihop.radio.mhrp.interfaces.ILQRPEventListener
        +
        +
      • +
      + + + +
        +
      • +

        RREPSent

        +
        public void RREPSent(long l,
        +                     long l1,
        +                     int i,
        +                     double d)
        +
        +
        Specified by:
        +
        RREPSent in interface com.sun.spot.multihop.radio.mhrp.interfaces.ILQRPEventListener
        +
        +
      • +
      + + + +
        +
      • +

        RERRSent

        +
        public void RERRSent(long l,
        +                     long l1)
        +
        +
        Specified by:
        +
        RERRSent in interface com.sun.spot.multihop.radio.mhrp.interfaces.ILQRPEventListener
        +
        +
      • +
      + + + +
        +
      • +

        RREQReceived

        +
        public void RREQReceived(long l,
        +                         long l1,
        +                         long l2,
        +                         int i,
        +                         double d)
        +
        +
        Specified by:
        +
        RREQReceived in interface com.sun.spot.multihop.radio.mhrp.interfaces.ILQRPEventListener
        +
        +
      • +
      + + + +
        +
      • +

        RREPReceived

        +
        public void RREPReceived(long l,
        +                         long l1,
        +                         long l2,
        +                         int i,
        +                         double d)
        +
        +
        Specified by:
        +
        RREPReceived in interface com.sun.spot.multihop.radio.mhrp.interfaces.ILQRPEventListener
        +
        +
      • +
      + + + +
        +
      • +

        RERRReceived

        +
        public void RERRReceived(long l,
        +                         long l1)
        +
        +
        Specified by:
        +
        RERRReceived in interface com.sun.spot.multihop.radio.mhrp.interfaces.ILQRPEventListener
        +
        +
      • +
      + + + +
        +
      • +

        notifyForward

        +
        public void notifyForward(long lastHop,
        +                          long nextHop,
        +                          long originator,
        +                          long destination)
        +
        +
        Specified by:
        +
        notifyForward in interface com.sun.spot.multihop.radio.IDataEventListener
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/communications/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/communications/package-frame.html new file mode 100644 index 0000000..d9730df --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/communications/package-frame.html @@ -0,0 +1,25 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.communications (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.communications

+ + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/communications/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/communications/package-summary.html new file mode 100644 index 0000000..0485b84 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/communications/package-summary.html @@ -0,0 +1,161 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.communications (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.communications

+
+
+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/communications/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/communications/package-tree.html new file mode 100644 index 0000000..c677732 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/communications/package-tree.html @@ -0,0 +1,142 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.communications Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.communications

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
    • +
    • eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener (implements com.sun.spot.multihop.radio.IDataEventListener, com.sun.spot.multihop.radio.mhrp.interfaces.ILQRPEventListener)
    • +
    +
  • +
+

Interface Hierarchy

+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.html b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.html new file mode 100644 index 0000000..569032a --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.html @@ -0,0 +1,413 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +SunSPOTBundle (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.datatypes
+

Class SunSPOTBundle

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.datatypes.ANES_BUNDLE
    +
    +
    +
    +
    public class SunSPOTBundle
    +extends java.lang.Object
    +implements eu.artemis.demanes.datatypes.ANES_BUNDLE
    +
    +
    Author:
    +
    Néstor Lucas Martínez , Vicente Hernández Díaz
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      SunSPOTBundle() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      eu.artemis.demanes.datatypes.ANES_BUNDLEclone() 
      booleancontainsKey(java.lang.String key) 
      booleancontainsKey(java.lang.String key, + java.lang.Class clazz) 
      java.lang.Objectget(java.lang.String key) 
      java.lang.Objectget(java.lang.String key, + java.lang.Class clazz) 
      java.lang.ClassgetType(java.lang.String key) 
      voidput(java.lang.String key, + java.lang.Object value) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SunSPOTBundle

        +
        public SunSPOTBundle()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        clone

        +
        public eu.artemis.demanes.datatypes.ANES_BUNDLE clone()
        +
        +
        Specified by:
        +
        clone in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        Overrides:
        +
        clone in class java.lang.Object
        +
        +
      • +
      + + + +
        +
      • +

        containsKey

        +
        public boolean containsKey(java.lang.String key)
        +
        +
        Specified by:
        +
        containsKey in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        +
      • +
      + + + +
        +
      • +

        containsKey

        +
        public boolean containsKey(java.lang.String key,
        +                           java.lang.Class clazz)
        +
        +
        Specified by:
        +
        containsKey in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        +
      • +
      + + + +
        +
      • +

        get

        +
        public java.lang.Object get(java.lang.String key)
        +                     throws eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
        Specified by:
        +
        get in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
      • +
      + + + +
        +
      • +

        get

        +
        public java.lang.Object get(java.lang.String key,
        +                            java.lang.Class clazz)
        +                     throws eu.artemis.demanes.exceptions.TypedRequestException,
        +                            eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
        Specified by:
        +
        get in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.TypedRequestException
        +
        eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
      • +
      + + + +
        +
      • +

        getType

        +
        public java.lang.Class getType(java.lang.String key)
        +                        throws eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
        Specified by:
        +
        getType in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
      • +
      + + + +
        +
      • +

        put

        +
        public void put(java.lang.String key,
        +                java.lang.Object value)
        +
        +
        Specified by:
        +
        put in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.html.mine new file mode 100644 index 0000000..4b7d467 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.html.mine @@ -0,0 +1,405 @@ + + + + + +SunSPOTBundle (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.datatypes
+

Class SunSPOTBundle

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.datatypes.ANES_BUNDLE
    +
    +
    +
    +
    public class SunSPOTBundle
    +extends java.lang.Object
    +implements eu.artemis.demanes.datatypes.ANES_BUNDLE
    +
    +
    Author:
    +
    Néstor Lucas Martínez , Vicente Hernández Díaz
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      SunSPOTBundle() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      eu.artemis.demanes.datatypes.ANES_BUNDLEclone() 
      booleancontainsKey(java.lang.String key) 
      booleancontainsKey(java.lang.String key, + java.lang.Class clazz) 
      java.lang.Objectget(java.lang.String key) 
      java.lang.Objectget(java.lang.String key, + java.lang.Class clazz) 
      java.lang.ClassgetType(java.lang.String key) 
      voidput(java.lang.String key, + java.lang.Object value) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SunSPOTBundle

        +
        public SunSPOTBundle()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        clone

        +
        public eu.artemis.demanes.datatypes.ANES_BUNDLE clone()
        +
        +
        Specified by:
        +
        clone in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        Overrides:
        +
        clone in class java.lang.Object
        +
        +
      • +
      + + + +
        +
      • +

        containsKey

        +
        public boolean containsKey(java.lang.String key)
        +
        +
        Specified by:
        +
        containsKey in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        +
      • +
      + + + +
        +
      • +

        containsKey

        +
        public boolean containsKey(java.lang.String key,
        +                           java.lang.Class clazz)
        +
        +
        Specified by:
        +
        containsKey in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        +
      • +
      + + + +
        +
      • +

        get

        +
        public java.lang.Object get(java.lang.String key)
        +                     throws eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
        Specified by:
        +
        get in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
      • +
      + + + +
        +
      • +

        get

        +
        public java.lang.Object get(java.lang.String key,
        +                            java.lang.Class clazz)
        +                     throws eu.artemis.demanes.exceptions.TypedRequestException,
        +                            eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
        Specified by:
        +
        get in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.TypedRequestException
        +
        eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
      • +
      + + + +
        +
      • +

        getType

        +
        public java.lang.Class getType(java.lang.String key)
        +                        throws eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
        Specified by:
        +
        getType in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
      • +
      + + + +
        +
      • +

        put

        +
        public void put(java.lang.String key,
        +                java.lang.Object value)
        +
        +
        Specified by:
        +
        put in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.html.r390 new file mode 100644 index 0000000..1db711d --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.html.r390 @@ -0,0 +1,385 @@ + + + + + +SunSPOTBundle (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.datatypes
+

Class SunSPOTBundle

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.datatypes.ANES_BUNDLE
    +
    +
    +
    +
    public class SunSPOTBundle
    +extends java.lang.Object
    +implements eu.artemis.demanes.datatypes.ANES_BUNDLE
    +
    Author:
    +
    Néstor Lucas Martínez , Vicente Hernández Díaz
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      SunSPOTBundle() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      eu.artemis.demanes.datatypes.ANES_BUNDLEclone() 
      booleancontainsKey(java.lang.String key) 
      booleancontainsKey(java.lang.String key, + java.lang.Class clazz) 
      java.lang.Objectget(java.lang.String key) 
      java.lang.Objectget(java.lang.String key, + java.lang.Class clazz) 
      java.lang.ClassgetType(java.lang.String key) 
      voidput(java.lang.String key, + java.lang.Object value) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SunSPOTBundle

        +
        public SunSPOTBundle()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        clone

        +
        public eu.artemis.demanes.datatypes.ANES_BUNDLE clone()
        +
        +
        Specified by:
        +
        clone in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        Overrides:
        +
        clone in class java.lang.Object
        +
        +
      • +
      + + + +
        +
      • +

        containsKey

        +
        public boolean containsKey(java.lang.String key)
        +
        +
        Specified by:
        +
        containsKey in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        +
      • +
      + + + +
        +
      • +

        containsKey

        +
        public boolean containsKey(java.lang.String key,
        +                  java.lang.Class clazz)
        +
        +
        Specified by:
        +
        containsKey in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        +
      • +
      + + + +
        +
      • +

        get

        +
        public java.lang.Object get(java.lang.String key)
        +                     throws eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
        Specified by:
        +
        get in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.NonExistentKeyException
        +
      • +
      + + + +
        +
      • +

        get

        +
        public java.lang.Object get(java.lang.String key,
        +                   java.lang.Class clazz)
        +                     throws eu.artemis.demanes.exceptions.TypedRequestException,
        +                            eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
        Specified by:
        +
        get in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.TypedRequestException
        +
        eu.artemis.demanes.exceptions.NonExistentKeyException
        +
      • +
      + + + +
        +
      • +

        getType

        +
        public java.lang.Class getType(java.lang.String key)
        +                        throws eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
        Specified by:
        +
        getType in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.NonExistentKeyException
        +
      • +
      + + + +
        +
      • +

        put

        +
        public void put(java.lang.String key,
        +       java.lang.Object value)
        +
        +
        Specified by:
        +
        put in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.html.r409 new file mode 100644 index 0000000..b4598ba --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.html.r409 @@ -0,0 +1,405 @@ + + + + + +SunSPOTBundle (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.datatypes
+

Class SunSPOTBundle

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.datatypes.ANES_BUNDLE
    +
    +
    +
    +
    public class SunSPOTBundle
    +extends java.lang.Object
    +implements eu.artemis.demanes.datatypes.ANES_BUNDLE
    +
    +
    Author:
    +
    Néstor Lucas Martínez , Vicente Hernández Díaz
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      SunSPOTBundle() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      eu.artemis.demanes.datatypes.ANES_BUNDLEclone() 
      booleancontainsKey(java.lang.String key) 
      booleancontainsKey(java.lang.String key, + java.lang.Class clazz) 
      java.lang.Objectget(java.lang.String key) 
      java.lang.Objectget(java.lang.String key, + java.lang.Class clazz) 
      java.lang.ClassgetType(java.lang.String key) 
      voidput(java.lang.String key, + java.lang.Object value) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SunSPOTBundle

        +
        public SunSPOTBundle()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        clone

        +
        public eu.artemis.demanes.datatypes.ANES_BUNDLE clone()
        +
        +
        Specified by:
        +
        clone in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        Overrides:
        +
        clone in class java.lang.Object
        +
        +
      • +
      + + + +
        +
      • +

        containsKey

        +
        public boolean containsKey(java.lang.String key)
        +
        +
        Specified by:
        +
        containsKey in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        +
      • +
      + + + +
        +
      • +

        containsKey

        +
        public boolean containsKey(java.lang.String key,
        +                           java.lang.Class clazz)
        +
        +
        Specified by:
        +
        containsKey in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        +
      • +
      + + + +
        +
      • +

        get

        +
        public java.lang.Object get(java.lang.String key)
        +                     throws eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
        Specified by:
        +
        get in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
      • +
      + + + +
        +
      • +

        get

        +
        public java.lang.Object get(java.lang.String key,
        +                            java.lang.Class clazz)
        +                     throws eu.artemis.demanes.exceptions.TypedRequestException,
        +                            eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
        Specified by:
        +
        get in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.TypedRequestException
        +
        eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
      • +
      + + + +
        +
      • +

        getType

        +
        public java.lang.Class getType(java.lang.String key)
        +                        throws eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
        Specified by:
        +
        getType in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.NonExistentKeyException
        +
        +
      • +
      + + + +
        +
      • +

        put

        +
        public void put(java.lang.String key,
        +                java.lang.Object value)
        +
        +
        Specified by:
        +
        put in interface eu.artemis.demanes.datatypes.ANES_BUNDLE
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-frame.html new file mode 100644 index 0000000..706e29b --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-frame.html @@ -0,0 +1,28 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT.datatypes (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + +

eu.artemis.demanes.impl.SunSPOT.datatypes

+
+

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-frame.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-frame.html.mine new file mode 100644 index 0000000..6f8b348 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-frame.html.mine @@ -0,0 +1,20 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.datatypes (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.datatypes

+
+

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-frame.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-frame.html.r390 new file mode 100644 index 0000000..1ec2c4d --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-frame.html.r390 @@ -0,0 +1,19 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.datatypes (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + +

eu.artemis.demanes.impl.SunSPOT.datatypes

+
+

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-frame.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-frame.html.r409 new file mode 100644 index 0000000..56ba1c4 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-frame.html.r409 @@ -0,0 +1,20 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.datatypes (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.datatypes

+
+

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-summary.html new file mode 100644 index 0000000..fc70fe0 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-summary.html @@ -0,0 +1,150 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT.datatypes (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.datatypes

+
+
+
    +
  • + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    SunSPOTBundle 
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-summary.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-summary.html.mine new file mode 100644 index 0000000..3ce65cc --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-summary.html.mine @@ -0,0 +1,142 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.datatypes (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.datatypes

+
+
+
    +
  • + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    SunSPOTBundle 
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-summary.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-summary.html.r390 new file mode 100644 index 0000000..67c7bf7 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-summary.html.r390 @@ -0,0 +1,133 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.datatypes (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.datatypes

+
+
+
    +
  • + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    SunSPOTBundle 
    +
  • +
+
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-summary.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-summary.html.r409 new file mode 100644 index 0000000..b2bb3ff --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-summary.html.r409 @@ -0,0 +1,142 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.datatypes (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.datatypes

+
+
+
    +
  • + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    SunSPOTBundle 
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-tree.html new file mode 100644 index 0000000..9f6183b --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-tree.html @@ -0,0 +1,145 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT.datatypes Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.datatypes

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle (implements eu.artemis.demanes.datatypes.ANES_BUNDLE)
    • +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-tree.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-tree.html.mine new file mode 100644 index 0000000..010e3b9 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-tree.html.mine @@ -0,0 +1,137 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.datatypes Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.datatypes

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle (implements eu.artemis.demanes.datatypes.ANES_BUNDLE)
    • +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-tree.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-tree.html.r390 new file mode 100644 index 0000000..b505b0d --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-tree.html.r390 @@ -0,0 +1,128 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.datatypes Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.datatypes

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle (implements eu.artemis.demanes.datatypes.ANES_BUNDLE)
    • +
    +
  • +
+
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-tree.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-tree.html.r409 new file mode 100644 index 0000000..2b5f512 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/datatypes/package-tree.html.r409 @@ -0,0 +1,137 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.datatypes Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.datatypes

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle (implements eu.artemis.demanes.datatypes.ANES_BUNDLE)
    • +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/DefaultConfig.html b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/DefaultConfig.html new file mode 100644 index 0000000..6589318 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/DefaultConfig.html @@ -0,0 +1,313 @@ + + + + + +DefaultConfig (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Class DefaultConfig

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.DefaultConfig
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class DefaultConfig
    +extends java.lang.Object
    +
    Class with the definition of basics keys for the configuration file + It also contains the description of the format for values
    +
    +
    Author:
    +
    Raul
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      com.sun.spot.core.util.PropertiesdefaultProp 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      DefaultConfig() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      com.sun.spot.core.util.PropertiesgetProp() 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        defaultProp

        +
        public com.sun.spot.core.util.Properties defaultProp
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DefaultConfig

        +
        public DefaultConfig()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getProp

        +
        public com.sun.spot.core.util.Properties getProp()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/ERRORMSG.html b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/ERRORMSG.html new file mode 100644 index 0000000..17bb0a9 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/ERRORMSG.html @@ -0,0 +1,529 @@ + + + + + +ERRORMSG (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Class ERRORMSG

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public final class ERRORMSG
    +extends java.lang.Object
    +
    Class for error messages description
    +
    +
    Author:
    +
    Raul
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + + + + + +
        +
      • +

        CONFIG_FILE

        +
        public static final java.lang.String CONFIG_FILE
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        CONFIG_FILE_KEYNUMBERS

        +
        public static final java.lang.String CONFIG_FILE_KEYNUMBERS
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        CONFIG_FILE_KEYNOTFOUND

        +
        public static final java.lang.String CONFIG_FILE_KEYNOTFOUND
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        CONFIG_FILE_VALUE_NOTVALID

        +
        public static final java.lang.String CONFIG_FILE_VALUE_NOTVALID
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        CONFIG_FILE_POINTS_ROW_HEADER_NOTFOUND

        +
        public static final java.lang.String CONFIG_FILE_POINTS_ROW_HEADER_NOTFOUND
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        CONFIG_FILE_POINTS_COLUMN

        +
        public static final java.lang.String CONFIG_FILE_POINTS_COLUMN
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        CONFIG_FILE_POINTS_VALUE_NOTVALID

        +
        public static final java.lang.String CONFIG_FILE_POINTS_VALUE_NOTVALID
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        CONFIG_FILE_POINTS_VALUES_UNSORTED

        +
        public static final java.lang.String CONFIG_FILE_POINTS_VALUES_UNSORTED
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        REASONING_FUNCTION

        +
        public static final java.lang.String REASONING_FUNCTION
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        VARIABLE_ID_NOTFOUND

        +
        public static final java.lang.String VARIABLE_ID_NOTFOUND
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        VARIABLE_ERROR_ACCESS

        +
        public static final java.lang.String VARIABLE_ERROR_ACCESS
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ERRORMSG

        +
        public ERRORMSG()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setErrorMSG

        +
        public static void setErrorMSG(java.lang.String ErrorMsg)
        +
      • +
      + + + +
        +
      • +

        ErrorPrint

        +
        public static void ErrorPrint(java.lang.String ErrorMsg)
        +
      • +
      + + + +
        +
      • +

        getLastErrorMSG

        +
        public static java.lang.String getLastErrorMSG()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.html b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.html new file mode 100644 index 0000000..019e50a --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.html @@ -0,0 +1,406 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +FuzzyDM (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Interface FuzzyDM

+
+
+
+
    +
  • +
    +
    All Known Implementing Classes:
    +
    Interp1DFuzzyDM
    +
    +
    +
    +
    public interface FuzzyDM
    +
    FuzzyDM + + This is an interface to a decision making function
    +
    +
    Version:
    +
    0.1
    +
    Author:
    +
    Raul
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Abstract Methods 
      Modifier and TypeMethod and Description
      voidevaluate() 
      java.util.EnumerationgetInputsID() 
      java.util.HashtablegetInputsSet() 
      java.lang.ObjectgetOutput(java.lang.String outputID) 
      java.util.EnumerationgetOutputsID() 
      java.util.HashtablegetOutputsSet() 
      voidload(java.io.InputStream resourceID) +
      Load Inference System from a storage device
      +
      voidload(com.sun.spot.core.util.Properties config) 
      booleansetInput(java.lang.String inputID, + double inputVal) 
      booleansetInput(java.lang.String inputID, + java.lang.Object inputVal) 
      booleansetNormFactors(java.util.Hashtable normFactors) 
      booleansetNormFactors(java.lang.String inputID, + double inputVal) 
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        load

        +
        void load(java.io.InputStream resourceID)
        +   throws java.io.IOException
        +
        Load Inference System from a storage device
        +
        +
        Parameters:
        +
        resourceID -
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        load

        +
        void load(com.sun.spot.core.util.Properties config)
        +   throws java.io.IOException
        +
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        getInputsID

        +
        java.util.Enumeration getInputsID()
        +
      • +
      + + + +
        +
      • +

        getOutputsID

        +
        java.util.Enumeration getOutputsID()
        +
      • +
      + + + +
        +
      • +

        setInput

        +
        boolean setInput(java.lang.String inputID,
        +                 java.lang.Object inputVal)
        +
      • +
      + + + +
        +
      • +

        setInput

        +
        boolean setInput(java.lang.String inputID,
        +                 double inputVal)
        +
      • +
      + + + +
        +
      • +

        getOutput

        +
        java.lang.Object getOutput(java.lang.String outputID)
        +
      • +
      + + + +
        +
      • +

        getInputsSet

        +
        java.util.Hashtable getInputsSet()
        +
      • +
      + + + +
        +
      • +

        getOutputsSet

        +
        java.util.Hashtable getOutputsSet()
        +
      • +
      + + + +
        +
      • +

        setNormFactors

        +
        boolean setNormFactors(java.util.Hashtable normFactors)
        +
      • +
      + + + +
        +
      • +

        setNormFactors

        +
        boolean setNormFactors(java.lang.String inputID,
        +                       double inputVal)
        +
      • +
      + + + +
        +
      • +

        evaluate

        +
        void evaluate()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.html.mine new file mode 100644 index 0000000..66b415f --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.html.mine @@ -0,0 +1,398 @@ + + + + + +FuzzyDM (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Interface FuzzyDM

+
+
+
+
    +
  • +
    +
    All Known Implementing Classes:
    +
    Interp1DFuzzyDM
    +
    +
    +
    +
    public interface FuzzyDM
    +
    FuzzyDM + + This is an interface to a decision making function
    +
    +
    Version:
    +
    0.1
    +
    Author:
    +
    Raul
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Abstract Methods 
      Modifier and TypeMethod and Description
      voidevaluate() 
      java.util.EnumerationgetInputsID() 
      java.util.HashtablegetInputsSet() 
      java.lang.ObjectgetOutput(java.lang.String outputID) 
      java.util.EnumerationgetOutputsID() 
      java.util.HashtablegetOutputsSet() 
      voidload(java.io.InputStream resourceID) +
      Load Inference System from a storage device
      +
      voidload(com.sun.spot.core.util.Properties config) 
      booleansetInput(java.lang.String inputID, + double inputVal) 
      booleansetInput(java.lang.String inputID, + java.lang.Object inputVal) 
      booleansetNormFactors(java.util.Hashtable normFactors) 
      booleansetNormFactors(java.lang.String inputID, + double inputVal) 
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        load

        +
        void load(java.io.InputStream resourceID)
        +   throws java.io.IOException
        +
        Load Inference System from a storage device
        +
        +
        Parameters:
        +
        resourceID -
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        load

        +
        void load(com.sun.spot.core.util.Properties config)
        +   throws java.io.IOException
        +
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        getInputsID

        +
        java.util.Enumeration getInputsID()
        +
      • +
      + + + +
        +
      • +

        getOutputsID

        +
        java.util.Enumeration getOutputsID()
        +
      • +
      + + + +
        +
      • +

        setInput

        +
        boolean setInput(java.lang.String inputID,
        +                 java.lang.Object inputVal)
        +
      • +
      + + + +
        +
      • +

        setInput

        +
        boolean setInput(java.lang.String inputID,
        +                 double inputVal)
        +
      • +
      + + + +
        +
      • +

        getOutput

        +
        java.lang.Object getOutput(java.lang.String outputID)
        +
      • +
      + + + +
        +
      • +

        getInputsSet

        +
        java.util.Hashtable getInputsSet()
        +
      • +
      + + + +
        +
      • +

        getOutputsSet

        +
        java.util.Hashtable getOutputsSet()
        +
      • +
      + + + +
        +
      • +

        setNormFactors

        +
        boolean setNormFactors(java.util.Hashtable normFactors)
        +
      • +
      + + + +
        +
      • +

        setNormFactors

        +
        boolean setNormFactors(java.lang.String inputID,
        +                       double inputVal)
        +
      • +
      + + + +
        +
      • +

        evaluate

        +
        void evaluate()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.html.r390 new file mode 100644 index 0000000..6e6358c --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.html.r390 @@ -0,0 +1,330 @@ + + + + + +FuzzyDM (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Interface FuzzyDM

+
+
+
+
    +
  • +
    +
    All Known Implementing Classes:
    +
    FDM1, Interp1DFuzzyDM, TestFuzzyDM
    +
    +
    +
    +
    public interface FuzzyDM
    +
    FuzzyDM + + This is an interface to a decision making function
    +
    Version:
    +
    0.1
    +
    Author:
    +
    Raul
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidevaluate() 
      java.util.EnumerationgetInputsID() 
      java.util.HashtablegetInputsSet() 
      java.lang.ObjectgetOutput(java.lang.String outputID) 
      java.util.EnumerationgetOutputsID() 
      java.util.HashtablegetOutputsSet() 
      voidload(java.io.InputStream resourceID) +
      Load Inference System from a storage device
      +
      voidsetInput(java.lang.String inputID, + java.lang.Object inputVal) 
      voidsetNormFactors(java.util.Hashtable normFactors) 
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        load

        +
        void load(java.io.InputStream resourceID)
        +          throws java.io.IOException
        +
        Load Inference System from a storage device
        +
        Parameters:
        resourceID -
        +
        Throws:
        +
        java.io.IOException
        +
      • +
      + + + +
        +
      • +

        getInputsID

        +
        java.util.Enumeration getInputsID()
        +
      • +
      + + + +
        +
      • +

        getOutputsID

        +
        java.util.Enumeration getOutputsID()
        +
      • +
      + + + +
        +
      • +

        setInput

        +
        void setInput(java.lang.String inputID,
        +            java.lang.Object inputVal)
        +
      • +
      + + + +
        +
      • +

        getOutput

        +
        java.lang.Object getOutput(java.lang.String outputID)
        +
      • +
      + + + +
        +
      • +

        getInputsSet

        +
        java.util.Hashtable getInputsSet()
        +
      • +
      + + + +
        +
      • +

        getOutputsSet

        +
        java.util.Hashtable getOutputsSet()
        +
      • +
      + + + +
        +
      • +

        setNormFactors

        +
        void setNormFactors(java.util.Hashtable normFactors)
        +
      • +
      + + + +
        +
      • +

        evaluate

        +
        void evaluate()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.html.r409 new file mode 100644 index 0000000..d898605 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.html.r409 @@ -0,0 +1,398 @@ + + + + + +FuzzyDM (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Interface FuzzyDM

+
+
+
+
    +
  • +
    +
    All Known Implementing Classes:
    +
    Interp1DFuzzyDM
    +
    +
    +
    +
    public interface FuzzyDM
    +
    FuzzyDM + + This is an interface to a decision making function
    +
    +
    Version:
    +
    0.1
    +
    Author:
    +
    Raul
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Abstract Methods 
      Modifier and TypeMethod and Description
      voidevaluate() 
      java.util.EnumerationgetInputsID() 
      java.util.HashtablegetInputsSet() 
      java.lang.ObjectgetOutput(java.lang.String outputID) 
      java.util.EnumerationgetOutputsID() 
      java.util.HashtablegetOutputsSet() 
      voidload(java.io.InputStream resourceID) +
      Load Inference System from a storage device
      +
      voidload(com.sun.spot.core.util.Properties config) 
      booleansetInput(java.lang.String inputID, + double inputVal) 
      booleansetInput(java.lang.String inputID, + java.lang.Object inputVal) 
      booleansetNormFactors(java.util.Hashtable normFactors) 
      booleansetNormFactors(java.lang.String inputID, + double inputVal) 
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        load

        +
        void load(java.io.InputStream resourceID)
        +   throws java.io.IOException
        +
        Load Inference System from a storage device
        +
        +
        Parameters:
        +
        resourceID -
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        load

        +
        void load(com.sun.spot.core.util.Properties config)
        +   throws java.io.IOException
        +
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        getInputsID

        +
        java.util.Enumeration getInputsID()
        +
      • +
      + + + +
        +
      • +

        getOutputsID

        +
        java.util.Enumeration getOutputsID()
        +
      • +
      + + + +
        +
      • +

        setInput

        +
        boolean setInput(java.lang.String inputID,
        +                 java.lang.Object inputVal)
        +
      • +
      + + + +
        +
      • +

        setInput

        +
        boolean setInput(java.lang.String inputID,
        +                 double inputVal)
        +
      • +
      + + + +
        +
      • +

        getOutput

        +
        java.lang.Object getOutput(java.lang.String outputID)
        +
      • +
      + + + +
        +
      • +

        getInputsSet

        +
        java.util.Hashtable getInputsSet()
        +
      • +
      + + + +
        +
      • +

        getOutputsSet

        +
        java.util.Hashtable getOutputsSet()
        +
      • +
      + + + +
        +
      • +

        setNormFactors

        +
        boolean setNormFactors(java.util.Hashtable normFactors)
        +
      • +
      + + + +
        +
      • +

        setNormFactors

        +
        boolean setNormFactors(java.lang.String inputID,
        +                       double inputVal)
        +
      • +
      + + + +
        +
      • +

        evaluate

        +
        void evaluate()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html new file mode 100644 index 0000000..56ccc3d --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html @@ -0,0 +1,534 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +Interp1DFuzzyDM (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Class Interp1DFuzzyDM

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    FuzzyDM
    +
    +
    +
    +
    public final class Interp1DFuzzyDM
    +extends java.lang.Object
    +implements FuzzyDM
    +
    +
    Author:
    +
    Raul
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      Interp1DFuzzyDM(java.io.InputStream ResourceID) 
      Interp1DFuzzyDM(com.sun.spot.core.util.Properties config) 
      Interp1DFuzzyDM(java.lang.String PropFileName) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidevaluate() 
      java.util.EnumerationgetInputsID() 
      java.util.HashtablegetInputsSet() 
      java.lang.ObjectgetOutput(java.lang.String outputID) 
      java.util.EnumerationgetOutputsID() 
      java.util.HashtablegetOutputsSet() 
      voidload(java.io.InputStream ResourceID) +
      Load Inference System from a storage device
      +
      voidload(com.sun.spot.core.util.Properties config) 
      booleansetInput(java.lang.String inputID, + double inputVal) 
      booleansetInput(java.lang.String inputID, + java.lang.Object inputVal) 
      booleansetNormFactors(java.util.Hashtable normFactors) 
      booleansetNormFactors(java.lang.String varID, + double normVal) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Interp1DFuzzyDM

        +
        public Interp1DFuzzyDM(java.lang.String PropFileName)
        +                throws java.io.IOException
        +
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        Interp1DFuzzyDM

        +
        public Interp1DFuzzyDM(java.io.InputStream ResourceID)
        +                throws java.io.IOException
        +
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        Interp1DFuzzyDM

        +
        public Interp1DFuzzyDM(com.sun.spot.core.util.Properties config)
        +                throws java.io.IOException
        +
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        load

        +
        public void load(java.io.InputStream ResourceID)
        +          throws java.io.IOException
        +
        Description copied from interface: FuzzyDM
        +
        Load Inference System from a storage device
        +
        +
        Specified by:
        +
        load in interface FuzzyDM
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        load

        +
        public void load(com.sun.spot.core.util.Properties config)
        +          throws java.io.IOException
        +
        +
        Specified by:
        +
        load in interface FuzzyDM
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        getInputsID

        +
        public java.util.Enumeration getInputsID()
        +
        +
        Specified by:
        +
        getInputsID in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        getOutputsID

        +
        public java.util.Enumeration getOutputsID()
        +
        +
        Specified by:
        +
        getOutputsID in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        setInput

        +
        public boolean setInput(java.lang.String inputID,
        +                        java.lang.Object inputVal)
        +
        +
        Specified by:
        +
        setInput in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        setInput

        +
        public boolean setInput(java.lang.String inputID,
        +                        double inputVal)
        +
        +
        Specified by:
        +
        setInput in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        getOutput

        +
        public java.lang.Object getOutput(java.lang.String outputID)
        +
        +
        Specified by:
        +
        getOutput in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        getInputsSet

        +
        public java.util.Hashtable getInputsSet()
        +
        +
        Specified by:
        +
        getInputsSet in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        getOutputsSet

        +
        public java.util.Hashtable getOutputsSet()
        +
        +
        Specified by:
        +
        getOutputsSet in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        setNormFactors

        +
        public boolean setNormFactors(java.lang.String varID,
        +                              double normVal)
        +
        +
        Specified by:
        +
        setNormFactors in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        setNormFactors

        +
        public boolean setNormFactors(java.util.Hashtable normFactors)
        +
        +
        Specified by:
        +
        setNormFactors in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        evaluate

        +
        public void evaluate()
        +
        +
        Specified by:
        +
        evaluate in interface FuzzyDM
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html.mine new file mode 100644 index 0000000..cba526e --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html.mine @@ -0,0 +1,526 @@ + + + + + +Interp1DFuzzyDM (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Class Interp1DFuzzyDM

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    FuzzyDM
    +
    +
    +
    +
    public final class Interp1DFuzzyDM
    +extends java.lang.Object
    +implements FuzzyDM
    +
    +
    Author:
    +
    Raul
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      Interp1DFuzzyDM(java.io.InputStream ResourceID) 
      Interp1DFuzzyDM(com.sun.spot.core.util.Properties config) 
      Interp1DFuzzyDM(java.lang.String PropFileName) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidevaluate() 
      java.util.EnumerationgetInputsID() 
      java.util.HashtablegetInputsSet() 
      java.lang.ObjectgetOutput(java.lang.String outputID) 
      java.util.EnumerationgetOutputsID() 
      java.util.HashtablegetOutputsSet() 
      voidload(java.io.InputStream ResourceID) +
      Load Inference System from a storage device
      +
      voidload(com.sun.spot.core.util.Properties config) 
      booleansetInput(java.lang.String inputID, + double inputVal) 
      booleansetInput(java.lang.String inputID, + java.lang.Object inputVal) 
      booleansetNormFactors(java.util.Hashtable normFactors) 
      booleansetNormFactors(java.lang.String varID, + double normVal) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Interp1DFuzzyDM

        +
        public Interp1DFuzzyDM(java.lang.String PropFileName)
        +                throws java.io.IOException
        +
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        Interp1DFuzzyDM

        +
        public Interp1DFuzzyDM(java.io.InputStream ResourceID)
        +                throws java.io.IOException
        +
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        Interp1DFuzzyDM

        +
        public Interp1DFuzzyDM(com.sun.spot.core.util.Properties config)
        +                throws java.io.IOException
        +
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        load

        +
        public void load(java.io.InputStream ResourceID)
        +          throws java.io.IOException
        +
        Description copied from interface: FuzzyDM
        +
        Load Inference System from a storage device
        +
        +
        Specified by:
        +
        load in interface FuzzyDM
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        load

        +
        public void load(com.sun.spot.core.util.Properties config)
        +          throws java.io.IOException
        +
        +
        Specified by:
        +
        load in interface FuzzyDM
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        getInputsID

        +
        public java.util.Enumeration getInputsID()
        +
        +
        Specified by:
        +
        getInputsID in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        getOutputsID

        +
        public java.util.Enumeration getOutputsID()
        +
        +
        Specified by:
        +
        getOutputsID in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        setInput

        +
        public boolean setInput(java.lang.String inputID,
        +                        java.lang.Object inputVal)
        +
        +
        Specified by:
        +
        setInput in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        setInput

        +
        public boolean setInput(java.lang.String inputID,
        +                        double inputVal)
        +
        +
        Specified by:
        +
        setInput in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        getOutput

        +
        public java.lang.Object getOutput(java.lang.String outputID)
        +
        +
        Specified by:
        +
        getOutput in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        getInputsSet

        +
        public java.util.Hashtable getInputsSet()
        +
        +
        Specified by:
        +
        getInputsSet in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        getOutputsSet

        +
        public java.util.Hashtable getOutputsSet()
        +
        +
        Specified by:
        +
        getOutputsSet in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        setNormFactors

        +
        public boolean setNormFactors(java.lang.String varID,
        +                              double normVal)
        +
        +
        Specified by:
        +
        setNormFactors in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        setNormFactors

        +
        public boolean setNormFactors(java.util.Hashtable normFactors)
        +
        +
        Specified by:
        +
        setNormFactors in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        evaluate

        +
        public void evaluate()
        +
        +
        Specified by:
        +
        evaluate in interface FuzzyDM
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html.r390 new file mode 100644 index 0000000..6726752 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html.r390 @@ -0,0 +1,731 @@ + + + + + +Interp1DFuzzyDM (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Class Interp1DFuzzyDM

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    FuzzyDM
    +
    +
    +
    +
    public class Interp1DFuzzyDM
    +extends java.lang.Object
    +implements FuzzyDM
    +
    Author:
    +
    Raul
    +
  • +
+
+
+ +
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Interp1DFuzzyDM

        +
        public Interp1DFuzzyDM(java.io.InputStream ResourceID)
        +                throws java.io.IOException
        +
        Throws:
        +
        java.io.IOException
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        load

        +
        public void load(java.io.InputStream ResourceID)
        +          throws java.io.IOException
        +
        Description copied from interface: FuzzyDM
        +
        Load Inference System from a storage device
        +
        +
        Specified by:
        +
        load in interface FuzzyDM
        +
        Throws:
        +
        java.io.IOException
        +
      • +
      + + + +
        +
      • +

        getInputsID

        +
        public java.util.Enumeration getInputsID()
        +
        +
        Specified by:
        +
        getInputsID in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        getOutputsID

        +
        public java.util.Enumeration getOutputsID()
        +
        +
        Specified by:
        +
        getOutputsID in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        setInput

        +
        public void setInput(java.lang.String inputID,
        +            java.lang.Object inputVal)
        +
        +
        Specified by:
        +
        setInput in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        getOutput

        +
        public java.lang.Object getOutput(java.lang.String outputID)
        +
        +
        Specified by:
        +
        getOutput in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        getInputsSet

        +
        public java.util.Hashtable getInputsSet()
        +
        +
        Specified by:
        +
        getInputsSet in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        getOutputsSet

        +
        public java.util.Hashtable getOutputsSet()
        +
        +
        Specified by:
        +
        getOutputsSet in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        setNormFactors

        +
        public void setNormFactors(java.util.Hashtable normFactors)
        +
        +
        Specified by:
        +
        setNormFactors in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        evaluate

        +
        public void evaluate()
        +
        +
        Specified by:
        +
        evaluate in interface FuzzyDM
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html.r409 new file mode 100644 index 0000000..b19d085 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.html.r409 @@ -0,0 +1,526 @@ + + + + + +Interp1DFuzzyDM (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Class Interp1DFuzzyDM

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    FuzzyDM
    +
    +
    +
    +
    public final class Interp1DFuzzyDM
    +extends java.lang.Object
    +implements FuzzyDM
    +
    +
    Author:
    +
    Raul
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      Interp1DFuzzyDM(java.io.InputStream ResourceID) 
      Interp1DFuzzyDM(com.sun.spot.core.util.Properties config) 
      Interp1DFuzzyDM(java.lang.String PropFileName) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidevaluate() 
      java.util.EnumerationgetInputsID() 
      java.util.HashtablegetInputsSet() 
      java.lang.ObjectgetOutput(java.lang.String outputID) 
      java.util.EnumerationgetOutputsID() 
      java.util.HashtablegetOutputsSet() 
      voidload(java.io.InputStream ResourceID) +
      Load Inference System from a storage device
      +
      voidload(com.sun.spot.core.util.Properties config) 
      booleansetInput(java.lang.String inputID, + double inputVal) 
      booleansetInput(java.lang.String inputID, + java.lang.Object inputVal) 
      booleansetNormFactors(java.util.Hashtable normFactors) 
      booleansetNormFactors(java.lang.String varID, + double normVal) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Interp1DFuzzyDM

        +
        public Interp1DFuzzyDM(java.lang.String PropFileName)
        +                throws java.io.IOException
        +
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        Interp1DFuzzyDM

        +
        public Interp1DFuzzyDM(java.io.InputStream ResourceID)
        +                throws java.io.IOException
        +
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        Interp1DFuzzyDM

        +
        public Interp1DFuzzyDM(com.sun.spot.core.util.Properties config)
        +                throws java.io.IOException
        +
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        load

        +
        public void load(java.io.InputStream ResourceID)
        +          throws java.io.IOException
        +
        Description copied from interface: FuzzyDM
        +
        Load Inference System from a storage device
        +
        +
        Specified by:
        +
        load in interface FuzzyDM
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        load

        +
        public void load(com.sun.spot.core.util.Properties config)
        +          throws java.io.IOException
        +
        +
        Specified by:
        +
        load in interface FuzzyDM
        +
        Throws:
        +
        java.io.IOException
        +
        +
      • +
      + + + +
        +
      • +

        getInputsID

        +
        public java.util.Enumeration getInputsID()
        +
        +
        Specified by:
        +
        getInputsID in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        getOutputsID

        +
        public java.util.Enumeration getOutputsID()
        +
        +
        Specified by:
        +
        getOutputsID in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        setInput

        +
        public boolean setInput(java.lang.String inputID,
        +                        java.lang.Object inputVal)
        +
        +
        Specified by:
        +
        setInput in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        setInput

        +
        public boolean setInput(java.lang.String inputID,
        +                        double inputVal)
        +
        +
        Specified by:
        +
        setInput in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        getOutput

        +
        public java.lang.Object getOutput(java.lang.String outputID)
        +
        +
        Specified by:
        +
        getOutput in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        getInputsSet

        +
        public java.util.Hashtable getInputsSet()
        +
        +
        Specified by:
        +
        getInputsSet in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        getOutputsSet

        +
        public java.util.Hashtable getOutputsSet()
        +
        +
        Specified by:
        +
        getOutputsSet in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        setNormFactors

        +
        public boolean setNormFactors(java.lang.String varID,
        +                              double normVal)
        +
        +
        Specified by:
        +
        setNormFactors in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        setNormFactors

        +
        public boolean setNormFactors(java.util.Hashtable normFactors)
        +
        +
        Specified by:
        +
        setNormFactors in interface FuzzyDM
        +
        +
      • +
      + + + +
        +
      • +

        evaluate

        +
        public void evaluate()
        +
        +
        Specified by:
        +
        evaluate in interface FuzzyDM
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/KEY.html b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/KEY.html new file mode 100644 index 0000000..1c95e9c --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/KEY.html @@ -0,0 +1,469 @@ + + + + + +KEY (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Class KEY

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public final class KEY
    +extends java.lang.Object
    +
    Class for keys and constants definition
    +
    +
    Author:
    +
    Raul
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      KEY() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+ +
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.html b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.html new file mode 100644 index 0000000..25bd989 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.html @@ -0,0 +1,405 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +PowerScalingController (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Class PowerScalingController

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.Reasoner, eu.artemis.demanes.reconfiguration.Triggerable
    +
    +
    +
    +
    public class PowerScalingController
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.Reasoner
    +
    This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
    +
    +
    Version:
    +
    1.0
    +
    Author:
    +
    Vicente Hernández Díaz <vicente.hernandez@upm.es>, Yuanjiang Huang <yuanjiang.huang@upm.es> +
    UNIVERSIDAD POLITECNICA DE MADRID (UPM) +
    DEMANES 2014
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      PowerScalingController(com.sun.spot.core.util.Properties props) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidsetActuationProvider(eu.artemis.demanes.reconfiguration.ActionProvider ap) +
      + Sets the object that will provide this Reasoner with it's actuators.
      +
      voidsetObservationProvider(eu.artemis.demanes.reconfiguration.ObservationProvider op) +
      + Sets the object that will provide this Reasoner with it's observations.
      +
      voidtrigger() +
      + The trigger function triggers the object to do it's main purpose.
      +
      voidtrigger(eu.artemis.demanes.datatypes.ANES_URN urn, + java.lang.Object value) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PowerScalingController

        +
        public PowerScalingController(com.sun.spot.core.util.Properties props)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setActuationProvider

        +
        public void setActuationProvider(eu.artemis.demanes.reconfiguration.ActionProvider ap)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Reasoner
        +

        + Sets the object that will provide this Reasoner with it's actuators. +

        + +

        + This function specifies that an ActionProvider should be + used as the object to get it's Actions from. The actions can + be obtained by the Reasoner using the ActionProvider's interface, and the + obtained actions can be subsequently used to change anything in the + system. +

        + +

        + If there was previously another object set as it's action provider, this + new object will overwrite it. There can only be one at a time. +

        +
        +
        Specified by:
        +
        setActuationProvider in interface eu.artemis.demanes.reconfiguration.Reasoner
        +
        Parameters:
        +
        ap - The object to be used from now on in order to get actions from
        +
        +
      • +
      + + + +
        +
      • +

        setObservationProvider

        +
        public void setObservationProvider(eu.artemis.demanes.reconfiguration.ObservationProvider op)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Reasoner
        +

        + Sets the object that will provide this Reasoner with it's observations. +

        + +

        + By specifying that an ObservationProvider should be used as + the object to get it's Observations from, means that all the + input of the Reasoner will have to come from this object. These + observations can then be obtained by the Reasoner via the appropriate + functions from the ObservationProvider interface. +

        + +

        + If there was already another observation provider set, this new object + will overwrite it. There can always only be one at a time. +

        +
        +
        Specified by:
        +
        setObservationProvider in interface eu.artemis.demanes.reconfiguration.Reasoner
        +
        Parameters:
        +
        op - The object to be used from now on in order to get input from
        +
        +
      • +
      + + + +
        +
      • +

        trigger

        +
        public void trigger()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Triggerable
        +

        + The trigger function triggers the object to do it's main purpose. The + trigger function is merely a generic get an object started. It receives + no arguments, it can be seen merely as a button that activates the + Triggerable object. +

        +
        +
        Specified by:
        +
        trigger in interface eu.artemis.demanes.reconfiguration.Triggerable
        +
        +
      • +
      + + + +
        +
      • +

        trigger

        +
        public void trigger(eu.artemis.demanes.datatypes.ANES_URN urn,
        +                    java.lang.Object value)
        +
        +
        Specified by:
        +
        trigger in interface eu.artemis.demanes.reconfiguration.Triggerable
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.html.mine new file mode 100644 index 0000000..100a19a --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.html.mine @@ -0,0 +1,397 @@ + + + + + +PowerScalingController (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Class PowerScalingController

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.Reasoner, eu.artemis.demanes.reconfiguration.Triggerable
    +
    +
    +
    +
    public class PowerScalingController
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.Reasoner
    +
    This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
    +
    +
    Version:
    +
    1.0
    +
    Author:
    +
    Vicente Hernández Díaz <vicente.hernandez@upm.es>, Yuanjiang Huang <yuanjiang.huang@upm.es> +
    UNIVERSIDAD POLITECNICA DE MADRID (UPM) +
    DEMANES 2014
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      PowerScalingController(com.sun.spot.core.util.Properties props) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidsetActuationProvider(eu.artemis.demanes.reconfiguration.ActionProvider ap) +
      + Sets the object that will provide this Reasoner with it's actuators.
      +
      voidsetObservationProvider(eu.artemis.demanes.reconfiguration.ObservationProvider op) +
      + Sets the object that will provide this Reasoner with it's observations.
      +
      voidtrigger() +
      + The trigger function triggers the object to do it's main purpose.
      +
      voidtrigger(eu.artemis.demanes.datatypes.ANES_URN urn, + java.lang.Object value) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PowerScalingController

        +
        public PowerScalingController(com.sun.spot.core.util.Properties props)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setActuationProvider

        +
        public void setActuationProvider(eu.artemis.demanes.reconfiguration.ActionProvider ap)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Reasoner
        +

        + Sets the object that will provide this Reasoner with it's actuators. +

        + +

        + This function specifies that an ActionProvider should be + used as the object to get it's Actions from. The actions can + be obtained by the Reasoner using the ActionProvider's interface, and the + obtained actions can be subsequently used to change anything in the + system. +

        + +

        + If there was previously another object set as it's action provider, this + new object will overwrite it. There can only be one at a time. +

        +
        +
        Specified by:
        +
        setActuationProvider in interface eu.artemis.demanes.reconfiguration.Reasoner
        +
        Parameters:
        +
        ap - The object to be used from now on in order to get actions from
        +
        +
      • +
      + + + +
        +
      • +

        setObservationProvider

        +
        public void setObservationProvider(eu.artemis.demanes.reconfiguration.ObservationProvider op)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Reasoner
        +

        + Sets the object that will provide this Reasoner with it's observations. +

        + +

        + By specifying that an ObservationProvider should be used as + the object to get it's Observations from, means that all the + input of the Reasoner will have to come from this object. These + observations can then be obtained by the Reasoner via the appropriate + functions from the ObservationProvider interface. +

        + +

        + If there was already another observation provider set, this new object + will overwrite it. There can always only be one at a time. +

        +
        +
        Specified by:
        +
        setObservationProvider in interface eu.artemis.demanes.reconfiguration.Reasoner
        +
        Parameters:
        +
        op - The object to be used from now on in order to get input from
        +
        +
      • +
      + + + +
        +
      • +

        trigger

        +
        public void trigger()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Triggerable
        +

        + The trigger function triggers the object to do it's main purpose. The + trigger function is merely a generic get an object started. It receives + no arguments, it can be seen merely as a button that activates the + Triggerable object. +

        +
        +
        Specified by:
        +
        trigger in interface eu.artemis.demanes.reconfiguration.Triggerable
        +
        +
      • +
      + + + +
        +
      • +

        trigger

        +
        public void trigger(eu.artemis.demanes.datatypes.ANES_URN urn,
        +                    java.lang.Object value)
        +
        +
        Specified by:
        +
        trigger in interface eu.artemis.demanes.reconfiguration.Triggerable
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.html.r390 new file mode 100644 index 0000000..47b7e3e --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.html.r390 @@ -0,0 +1,376 @@ + + + + + +PowerScalingController (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Class PowerScalingController

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.Reasoner, eu.artemis.demanes.reconfiguration.Triggerable
    +
    +
    +
    +
    public class PowerScalingController
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.Reasoner
    +
    This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
    +
    Version:
    +
    1.0
    +
    Author:
    +
    Vicente Hernández Díaz <vicente.hernandez@upm.es>, Yuanjiang Huang <yuanjiang.huang@upm.es> +
    UNIVERSIDAD POLITECNICA DE MADRID (UPM) +
    DEMANES 2014
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      PowerScalingController(com.sun.spot.core.util.Properties props) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidsetActuationProvider(eu.artemis.demanes.reconfiguration.ActionProvider ap) +
      + Sets the object that will provide this Reasoner with it's actuators.
      +
      voidsetObservationProvider(eu.artemis.demanes.reconfiguration.ObservationProvider op) +
      + Sets the object that will provide this Reasoner with it's observations.
      +
      voidtrigger() +
      + The trigger function triggers the object to do it's main purpose.
      +
      voidtrigger(eu.artemis.demanes.datatypes.ANES_URN urn, + java.lang.Object value) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PowerScalingController

        +
        public PowerScalingController(com.sun.spot.core.util.Properties props)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setActuationProvider

        +
        public void setActuationProvider(eu.artemis.demanes.reconfiguration.ActionProvider ap)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Reasoner
        +

        + Sets the object that will provide this Reasoner with it's actuators. +

        + +

        + This function specifies that an ActionProvider should be + used as the object to get it's Actions from. The actions can + be obtained by the Reasoner using the ActionProvider's interface, and the + obtained actions can be subsequently used to change anything in the + system. +

        + +

        + If there was previously another object set as it's action provider, this + new object will overwrite it. There can only be one at a time. +

        +
        +
        Specified by:
        +
        setActuationProvider in interface eu.artemis.demanes.reconfiguration.Reasoner
        +
        Parameters:
        ap - The object to be used from now on in order to get actions from
        +
      • +
      + + + +
        +
      • +

        setObservationProvider

        +
        public void setObservationProvider(eu.artemis.demanes.reconfiguration.ObservationProvider op)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Reasoner
        +

        + Sets the object that will provide this Reasoner with it's observations. +

        + +

        + By specifying that an ObservationProvider should be used as + the object to get it's Observations from, means that all the + input of the Reasoner will have to come from this object. These + observations can then be obtained by the Reasoner via the appropriate + functions from the ObservationProvider interface. +

        + +

        + If there was already another observation provider set, this new object + will overwrite it. There can always only be one at a time. +

        +
        +
        Specified by:
        +
        setObservationProvider in interface eu.artemis.demanes.reconfiguration.Reasoner
        +
        Parameters:
        op - The object to be used from now on in order to get input from
        +
      • +
      + + + +
        +
      • +

        trigger

        +
        public void trigger()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Triggerable
        +

        + The trigger function triggers the object to do it's main purpose. The + trigger function is merely a generic get an object started. It receives + no arguments, it can be seen merely as a button that activates the + Triggerable object. +

        +
        +
        Specified by:
        +
        trigger in interface eu.artemis.demanes.reconfiguration.Triggerable
        +
        +
      • +
      + + + +
        +
      • +

        trigger

        +
        public void trigger(eu.artemis.demanes.datatypes.ANES_URN urn,
        +           java.lang.Object value)
        +
        +
        Specified by:
        +
        trigger in interface eu.artemis.demanes.reconfiguration.Triggerable
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.html.r409 new file mode 100644 index 0000000..e01289e --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.html.r409 @@ -0,0 +1,397 @@ + + + + + +PowerScalingController (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Class PowerScalingController

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.Reasoner, eu.artemis.demanes.reconfiguration.Triggerable
    +
    +
    +
    +
    public class PowerScalingController
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.Reasoner
    +
    This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
    +
    +
    Version:
    +
    1.0
    +
    Author:
    +
    Vicente Hernández Díaz <vicente.hernandez@upm.es>, Yuanjiang Huang <yuanjiang.huang@upm.es> +
    UNIVERSIDAD POLITECNICA DE MADRID (UPM) +
    DEMANES 2014
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      PowerScalingController(com.sun.spot.core.util.Properties props) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidsetActuationProvider(eu.artemis.demanes.reconfiguration.ActionProvider ap) +
      + Sets the object that will provide this Reasoner with it's actuators.
      +
      voidsetObservationProvider(eu.artemis.demanes.reconfiguration.ObservationProvider op) +
      + Sets the object that will provide this Reasoner with it's observations.
      +
      voidtrigger() +
      + The trigger function triggers the object to do it's main purpose.
      +
      voidtrigger(eu.artemis.demanes.datatypes.ANES_URN urn, + java.lang.Object value) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PowerScalingController

        +
        public PowerScalingController(com.sun.spot.core.util.Properties props)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setActuationProvider

        +
        public void setActuationProvider(eu.artemis.demanes.reconfiguration.ActionProvider ap)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Reasoner
        +

        + Sets the object that will provide this Reasoner with it's actuators. +

        + +

        + This function specifies that an ActionProvider should be + used as the object to get it's Actions from. The actions can + be obtained by the Reasoner using the ActionProvider's interface, and the + obtained actions can be subsequently used to change anything in the + system. +

        + +

        + If there was previously another object set as it's action provider, this + new object will overwrite it. There can only be one at a time. +

        +
        +
        Specified by:
        +
        setActuationProvider in interface eu.artemis.demanes.reconfiguration.Reasoner
        +
        Parameters:
        +
        ap - The object to be used from now on in order to get actions from
        +
        +
      • +
      + + + +
        +
      • +

        setObservationProvider

        +
        public void setObservationProvider(eu.artemis.demanes.reconfiguration.ObservationProvider op)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Reasoner
        +

        + Sets the object that will provide this Reasoner with it's observations. +

        + +

        + By specifying that an ObservationProvider should be used as + the object to get it's Observations from, means that all the + input of the Reasoner will have to come from this object. These + observations can then be obtained by the Reasoner via the appropriate + functions from the ObservationProvider interface. +

        + +

        + If there was already another observation provider set, this new object + will overwrite it. There can always only be one at a time. +

        +
        +
        Specified by:
        +
        setObservationProvider in interface eu.artemis.demanes.reconfiguration.Reasoner
        +
        Parameters:
        +
        op - The object to be used from now on in order to get input from
        +
        +
      • +
      + + + +
        +
      • +

        trigger

        +
        public void trigger()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Triggerable
        +

        + The trigger function triggers the object to do it's main purpose. The + trigger function is merely a generic get an object started. It receives + no arguments, it can be seen merely as a button that activates the + Triggerable object. +

        +
        +
        Specified by:
        +
        trigger in interface eu.artemis.demanes.reconfiguration.Triggerable
        +
        +
      • +
      + + + +
        +
      • +

        trigger

        +
        public void trigger(eu.artemis.demanes.datatypes.ANES_URN urn,
        +                    java.lang.Object value)
        +
        +
        Specified by:
        +
        trigger in interface eu.artemis.demanes.reconfiguration.Triggerable
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFactory.html b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFactory.html new file mode 100644 index 0000000..4b4eda2 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFactory.html @@ -0,0 +1,277 @@ + + + + + +PowerScalingControllerFactory (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Class PowerScalingControllerFactory

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFactory
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class PowerScalingControllerFactory
    +extends java.lang.Object
    +
    +
    Author:
    +
    grys
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static eu.artemis.demanes.reconfiguration.ReasonergetInstance(java.lang.String what, + com.sun.spot.core.util.Properties props) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PowerScalingControllerFactory

        +
        public PowerScalingControllerFactory()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getInstance

        +
        public static eu.artemis.demanes.reconfiguration.Reasoner getInstance(java.lang.String what,
        +                                                                      com.sun.spot.core.util.Properties props)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFuzzyLogic.html b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFuzzyLogic.html new file mode 100644 index 0000000..87bacfa --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFuzzyLogic.html @@ -0,0 +1,391 @@ + + + + + +PowerScalingControllerFuzzyLogic (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Class PowerScalingControllerFuzzyLogic

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.Reasoner, eu.artemis.demanes.reconfiguration.Triggerable
    +
    +
    +
    +
    public class PowerScalingControllerFuzzyLogic
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.Reasoner
    +
    +
    Author:
    +
    grys
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidsetActuationProvider(eu.artemis.demanes.reconfiguration.ActionProvider ap) +
      + Sets the object that will provide this Reasoner with it's actuators.
      +
      voidsetObservationProvider(eu.artemis.demanes.reconfiguration.ObservationProvider op) +
      + Sets the object that will provide this Reasoner with it's observations.
      +
      voidtrigger() +
      + The trigger function triggers the object to do it's main purpose.
      +
      voidtrigger(eu.artemis.demanes.datatypes.ANES_URN urn, + java.lang.Object value) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PowerScalingControllerFuzzyLogic

        +
        public PowerScalingControllerFuzzyLogic(com.sun.spot.core.util.Properties props)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setActuationProvider

        +
        public void setActuationProvider(eu.artemis.demanes.reconfiguration.ActionProvider ap)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Reasoner
        +

        + Sets the object that will provide this Reasoner with it's actuators. +

        + +

        + This function specifies that an ActionProvider should be + used as the object to get it's Actions from. The actions can + be obtained by the Reasoner using the ActionProvider's interface, and the + obtained actions can be subsequently used to change anything in the + system. +

        + +

        + If there was previously another object set as it's action provider, this + new object will overwrite it. There can only be one at a time. +

        +
        +
        Specified by:
        +
        setActuationProvider in interface eu.artemis.demanes.reconfiguration.Reasoner
        +
        Parameters:
        +
        ap - The object to be used from now on in order to get actions from
        +
        +
      • +
      + + + +
        +
      • +

        setObservationProvider

        +
        public void setObservationProvider(eu.artemis.demanes.reconfiguration.ObservationProvider op)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Reasoner
        +

        + Sets the object that will provide this Reasoner with it's observations. +

        + +

        + By specifying that an ObservationProvider should be used as + the object to get it's Observations from, means that all the + input of the Reasoner will have to come from this object. These + observations can then be obtained by the Reasoner via the appropriate + functions from the ObservationProvider interface. +

        + +

        + If there was already another observation provider set, this new object + will overwrite it. There can always only be one at a time. +

        +
        +
        Specified by:
        +
        setObservationProvider in interface eu.artemis.demanes.reconfiguration.Reasoner
        +
        Parameters:
        +
        op - The object to be used from now on in order to get input from
        +
        +
      • +
      + + + +
        +
      • +

        trigger

        +
        public void trigger()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Triggerable
        +

        + The trigger function triggers the object to do it's main purpose. The + trigger function is merely a generic get an object started. It receives + no arguments, it can be seen merely as a button that activates the + Triggerable object. +

        +
        +
        Specified by:
        +
        trigger in interface eu.artemis.demanes.reconfiguration.Triggerable
        +
        +
      • +
      + + + +
        +
      • +

        trigger

        +
        public void trigger(eu.artemis.demanes.datatypes.ANES_URN urn,
        +                    java.lang.Object value)
        +
        +
        Specified by:
        +
        trigger in interface eu.artemis.demanes.reconfiguration.Triggerable
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerInterp1FDM.html b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerInterp1FDM.html new file mode 100644 index 0000000..6b8b605 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerInterp1FDM.html @@ -0,0 +1,397 @@ + + + + + +PowerScalingControllerInterp1FDM (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Class PowerScalingControllerInterp1FDM

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.Reasoner, eu.artemis.demanes.reconfiguration.Triggerable
    +
    +
    +
    +
    public class PowerScalingControllerInterp1FDM
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.Reasoner
    +
    This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
    +
    +
    Version:
    +
    1.0
    +
    Author:
    +
    Vicente Hernández Díaz <vicente.hernandez@upm.es>, Yuanjiang Huang <yuanjiang.huang@upm.es> +
    UNIVERSIDAD POLITECNICA DE MADRID (UPM) +
    DEMANES 2014
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidsetActuationProvider(eu.artemis.demanes.reconfiguration.ActionProvider ap) +
      + Sets the object that will provide this Reasoner with it's actuators.
      +
      voidsetObservationProvider(eu.artemis.demanes.reconfiguration.ObservationProvider op) +
      + Sets the object that will provide this Reasoner with it's observations.
      +
      voidtrigger() +
      + The trigger function triggers the object to do it's main purpose.
      +
      voidtrigger(eu.artemis.demanes.datatypes.ANES_URN urn, + java.lang.Object value) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PowerScalingControllerInterp1FDM

        +
        public PowerScalingControllerInterp1FDM(com.sun.spot.core.util.Properties props)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setActuationProvider

        +
        public void setActuationProvider(eu.artemis.demanes.reconfiguration.ActionProvider ap)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Reasoner
        +

        + Sets the object that will provide this Reasoner with it's actuators. +

        + +

        + This function specifies that an ActionProvider should be + used as the object to get it's Actions from. The actions can + be obtained by the Reasoner using the ActionProvider's interface, and the + obtained actions can be subsequently used to change anything in the + system. +

        + +

        + If there was previously another object set as it's action provider, this + new object will overwrite it. There can only be one at a time. +

        +
        +
        Specified by:
        +
        setActuationProvider in interface eu.artemis.demanes.reconfiguration.Reasoner
        +
        Parameters:
        +
        ap - The object to be used from now on in order to get actions from
        +
        +
      • +
      + + + +
        +
      • +

        setObservationProvider

        +
        public void setObservationProvider(eu.artemis.demanes.reconfiguration.ObservationProvider op)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Reasoner
        +

        + Sets the object that will provide this Reasoner with it's observations. +

        + +

        + By specifying that an ObservationProvider should be used as + the object to get it's Observations from, means that all the + input of the Reasoner will have to come from this object. These + observations can then be obtained by the Reasoner via the appropriate + functions from the ObservationProvider interface. +

        + +

        + If there was already another observation provider set, this new object + will overwrite it. There can always only be one at a time. +

        +
        +
        Specified by:
        +
        setObservationProvider in interface eu.artemis.demanes.reconfiguration.Reasoner
        +
        Parameters:
        +
        op - The object to be used from now on in order to get input from
        +
        +
      • +
      + + + +
        +
      • +

        trigger

        +
        public void trigger()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Triggerable
        +

        + The trigger function triggers the object to do it's main purpose. The + trigger function is merely a generic get an object started. It receives + no arguments, it can be seen merely as a button that activates the + Triggerable object. +

        +
        +
        Specified by:
        +
        trigger in interface eu.artemis.demanes.reconfiguration.Triggerable
        +
        +
      • +
      + + + +
        +
      • +

        trigger

        +
        public void trigger(eu.artemis.demanes.datatypes.ANES_URN urn,
        +                    java.lang.Object value)
        +
        +
        Specified by:
        +
        trigger in interface eu.artemis.demanes.reconfiguration.Triggerable
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Variable.html b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Variable.html new file mode 100644 index 0000000..e4ff919 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Variable.html @@ -0,0 +1,524 @@ + + + + + +Variable (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+

Class Variable

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Variable
    +extends java.lang.Object
    +
    +
    Author:
    +
    Raul
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringVAR_KNORM 
      static java.lang.StringVAR_NUMBER 
      static java.lang.StringVAR_VALUE 
      static java.lang.StringVAR_VALUE_NORM 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      Variable(java.lang.String VarType) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voiddenormVar() 
      doublegetValue() 
      doublegetValueNorm() 
      voidnormVar() 
      voidput(java.lang.String key, + java.lang.String value) 
      voidsetKnorm(double Knorm) 
      voidsetKnorm(java.lang.Object Knorm) 
      voidsetNumber(int VarNumber) 
      voidsetValue(double VarValue) 
      voidsetValue(java.lang.Object VarValue) 
      voidsetValueNorm(double VarValue) 
      voidsetValueNorm(java.lang.Double VarValue) 
      voidsetVarID(java.lang.String Var_ID) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Variable

        +
        public Variable(java.lang.String VarType)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setVarID

        +
        public void setVarID(java.lang.String Var_ID)
        +
      • +
      + + + +
        +
      • +

        setKnorm

        +
        public void setKnorm(java.lang.Object Knorm)
        +
      • +
      + + + +
        +
      • +

        setKnorm

        +
        public void setKnorm(double Knorm)
        +
      • +
      + + + +
        +
      • +

        getValue

        +
        public double getValue()
        +
      • +
      + + + +
        +
      • +

        getValueNorm

        +
        public double getValueNorm()
        +
      • +
      + + + +
        +
      • +

        setValue

        +
        public void setValue(java.lang.Object VarValue)
        +
      • +
      + + + +
        +
      • +

        setValue

        +
        public void setValue(double VarValue)
        +
      • +
      + + + +
        +
      • +

        setNumber

        +
        public void setNumber(int VarNumber)
        +
      • +
      + + + +
        +
      • +

        setValueNorm

        +
        public void setValueNorm(java.lang.Double VarValue)
        +
      • +
      + + + +
        +
      • +

        setValueNorm

        +
        public void setValueNorm(double VarValue)
        +
      • +
      + + + +
        +
      • +

        normVar

        +
        public void normVar()
        +
      • +
      + + + +
        +
      • +

        denormVar

        +
        public void denormVar()
        +
      • +
      + + + +
        +
      • +

        put

        +
        public void put(java.lang.String key,
        +                java.lang.String value)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-frame.html new file mode 100644 index 0000000..141a145 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-frame.html @@ -0,0 +1,40 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + +

eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner

+ + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-frame.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-frame.html.mine new file mode 100644 index 0000000..6a65823 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-frame.html.mine @@ -0,0 +1,32 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner

+ + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-frame.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-frame.html.r390 new file mode 100644 index 0000000..280cb9d --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-frame.html.r390 @@ -0,0 +1,26 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + +

eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner

+
+

Interfaces

+ +

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-frame.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-frame.html.r409 new file mode 100644 index 0000000..41e6a3e --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-frame.html.r409 @@ -0,0 +1,32 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner

+ + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-summary.html new file mode 100644 index 0000000..a0ce09b --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-summary.html @@ -0,0 +1,214 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner

+
+
+
    +
  • + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    FuzzyDM +
    FuzzyDM + + This is an interface to a decision making function
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    DefaultConfig +
    Class with the definition of basics keys for the configuration file + It also contains the description of the format for values
    +
    ERRORMSG +
    Class for error messages description
    +
    Interp1DFuzzyDM 
    KEY +
    Class for keys and constants definition
    +
    PowerScalingController +
    This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
    +
    PowerScalingControllerFactory 
    PowerScalingControllerFuzzyLogic 
    PowerScalingControllerInterp1FDM +
    This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
    +
    Variable 
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-summary.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-summary.html.mine new file mode 100644 index 0000000..8873fb5 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-summary.html.mine @@ -0,0 +1,206 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner

+
+
+
    +
  • + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    FuzzyDM +
    FuzzyDM + + This is an interface to a decision making function
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    DefaultConfig +
    Class with the definition of basics keys for the configuration file + It also contains the description of the format for values
    +
    ERRORMSG +
    Class for error messages description
    +
    Interp1DFuzzyDM 
    KEY +
    Class for keys and constants definition
    +
    PowerScalingController +
    This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
    +
    PowerScalingControllerFactory 
    PowerScalingControllerFuzzyLogic 
    PowerScalingControllerInterp1FDM +
    This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
    +
    Variable 
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-summary.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-summary.html.r390 new file mode 100644 index 0000000..d5c8c83 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-summary.html.r390 @@ -0,0 +1,167 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner

+
+
+
    +
  • + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    FuzzyDM +
    FuzzyDM + + This is an interface to a decision making function
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    FDM1 
    Interp1DFuzzyDM 
    PowerScalingController +
    This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
    +
    TestFuzzyDM 
    +
  • +
+
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-summary.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-summary.html.r409 new file mode 100644 index 0000000..bdffe4e --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-summary.html.r409 @@ -0,0 +1,206 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner

+
+
+
    +
  • + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    FuzzyDM +
    FuzzyDM + + This is an interface to a decision making function
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    DefaultConfig +
    Class with the definition of basics keys for the configuration file + It also contains the description of the format for values
    +
    ERRORMSG +
    Class for error messages description
    +
    Interp1DFuzzyDM 
    KEY +
    Class for keys and constants definition
    +
    PowerScalingController +
    This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
    +
    PowerScalingControllerFactory 
    PowerScalingControllerFuzzyLogic 
    PowerScalingControllerInterp1FDM +
    This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
    +
    Variable 
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-tree.html new file mode 100644 index 0000000..7143853 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-tree.html @@ -0,0 +1,157 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object + +
  • +
+

Interface Hierarchy

+
    +
  • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-tree.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-tree.html.mine new file mode 100644 index 0000000..5937b3e --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-tree.html.mine @@ -0,0 +1,149 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object + +
  • +
+

Interface Hierarchy

+
    +
  • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-tree.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-tree.html.r390 new file mode 100644 index 0000000..072d1e4 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-tree.html.r390 @@ -0,0 +1,135 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FDM1 (implements eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM)
    • +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM (implements eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM)
    • +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController (implements eu.artemis.demanes.reconfiguration.Reasoner)
    • +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.TestFuzzyDM (implements eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM)
    • +
    +
  • +
+

Interface Hierarchy

+
    +
  • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
  • +
+
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-tree.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-tree.html.r409 new file mode 100644 index 0000000..04703e7 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/package-tree.html.r409 @@ -0,0 +1,149 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object + +
  • +
+

Interface Hierarchy

+
    +
  • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/package-frame.html new file mode 100644 index 0000000..1993f33 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/package-frame.html @@ -0,0 +1,28 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + +

eu.artemis.demanes.impl.SunSPOT

+
+

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/package-frame.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/package-frame.html.mine new file mode 100644 index 0000000..b0cc22a --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/package-frame.html.mine @@ -0,0 +1,20 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT

+
+

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/package-frame.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/package-frame.html.r390 new file mode 100644 index 0000000..f0495f8 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/package-frame.html.r390 @@ -0,0 +1,20 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + +

eu.artemis.demanes.impl.SunSPOT

+ + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/package-frame.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/package-frame.html.r409 new file mode 100644 index 0000000..c2f16ca --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/package-frame.html.r409 @@ -0,0 +1,20 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT

+
+

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/package-summary.html new file mode 100644 index 0000000..c0e0bdf --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/package-summary.html @@ -0,0 +1,153 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT

+
+
+
    +
  • + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    SunSPOTPowerController +
    The startApp method of this class is called by the VM to start the + application.
    +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/package-summary.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/package-summary.html.mine new file mode 100644 index 0000000..c1c5c32 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/package-summary.html.mine @@ -0,0 +1,145 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT

+
+
+
    +
  • + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    SunSPOTPowerController +
    The startApp method of this class is called by the VM to start the + application.
    +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/package-summary.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/package-summary.html.r390 new file mode 100644 index 0000000..a8c009c --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/package-summary.html.r390 @@ -0,0 +1,143 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT

+
+
+
    +
  • + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    SunSPOTPowerController +
    The startApp method of this class is called by the VM to start the + application.
    +
    TesterForController +
    The startApp method of this class is called by the VM to start the + application.
    +
    +
  • +
+
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/package-summary.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/package-summary.html.r409 new file mode 100644 index 0000000..035143a --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/package-summary.html.r409 @@ -0,0 +1,145 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT

+
+
+
    +
  • + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    SunSPOTPowerController +
    The startApp method of this class is called by the VM to start the + application.
    +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/package-tree.html new file mode 100644 index 0000000..8f117ee --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/package-tree.html @@ -0,0 +1,149 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • javax.microedition.midlet.MIDlet +
        +
      • eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController (implements com.sun.spot.core.resources.transducers.ISwitchListener)
      • +
      +
    • +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/package-tree.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/package-tree.html.mine new file mode 100644 index 0000000..6f00fdb --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/package-tree.html.mine @@ -0,0 +1,141 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • javax.microedition.midlet.MIDlet +
        +
      • eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController (implements com.sun.spot.core.resources.transducers.ISwitchListener)
      • +
      +
    • +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/package-tree.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/package-tree.html.r390 new file mode 100644 index 0000000..945ae44 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/package-tree.html.r390 @@ -0,0 +1,133 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/package-tree.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/package-tree.html.r409 new file mode 100644 index 0000000..d590ed8 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/package-tree.html.r409 @@ -0,0 +1,141 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • javax.microedition.midlet.MIDlet +
        +
      • eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController (implements com.sun.spot.core.resources.transducers.ISwitchListener)
      • +
      +
    • +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ActuatorControl.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ActuatorControl.html new file mode 100644 index 0000000..64a7eba --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ActuatorControl.html @@ -0,0 +1,231 @@ + + + + + +ActuatorControl (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration
+

Interface ActuatorControl

+
+
+
+
    +
  • +
    +
    All Known Implementing Classes:
    +
    PowerTransmissionActuator
    +
    +
    +
    +
    public interface ActuatorControl
    +
    +
    Version:
    +
    1.0
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        reset

        +
        void reset()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.html new file mode 100644 index 0000000..1393945 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.html @@ -0,0 +1,656 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +ORAMediatorForSunSPOT (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration
+

Class ORAMediatorForSunSPOT

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.ActionProvider, eu.artemis.demanes.reconfiguration.ActuatorRegistry, eu.artemis.demanes.reconfiguration.ObservationProvider, eu.artemis.demanes.reconfiguration.ObserverRegistry, eu.artemis.demanes.reconfiguration.ORAMediator
    +
    +
    +
    +
    public class ORAMediatorForSunSPOT
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.ORAMediator, eu.artemis.demanes.reconfiguration.ActionProvider, eu.artemis.demanes.reconfiguration.ObservationProvider
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      java.util.VectorgetActions() +
      + Query the Actions that can be invoked using this ActionProvider
      +
      java.util.VectorgetObservations() +
      +<<<<<<< .mine + Query the Observations that can be obtained from this ObservationProvider
      +======= + Query the Observations that can be obtained from this ObservationProvider + + + + The ObservationProvider.getValue(ANES_URN) function requires a ANES_URN + argument which identifies which observation to obtain. +>>>>>>> .r409 +
      java.lang.ObjectgetValue(eu.artemis.demanes.datatypes.ANES_URN id) +
      + Get the value of a specific Observation in order to monitor +<<<<<<< .mine + the system
      +======= + the system + + + + By calling this function, the user can specify that an Observation with a + specific identifier should be invoked. +>>>>>>> .r409 +
      voidinvoke(eu.artemis.demanes.datatypes.ANES_URN id, + eu.artemis.demanes.datatypes.ANES_BUNDLE arguments) +
      + Invokes a specific Action in order to modify the system
      +
      voidregisterActuator(eu.artemis.demanes.reconfiguration.Actuator actuator) +
      + Add a Actuator object to the collection of actuators by + which the ReasoningEngine can modify the system.
      +
      voidregisterObserver(eu.artemis.demanes.reconfiguration.Observer observer) +
      + Add a Observer object to the collection of observers by + which the ReasoningEngine can monitor the system.
      +
      voidsetReasoner(eu.artemis.demanes.reconfiguration.Reasoner reasoner) +
      + Set an object with the Reasoner as the current reasoner.
      +
      voidsetTriggeringPolicy(eu.artemis.demanes.reconfiguration.TriggerPolicy triggerPolicy) +
      + Set an object with the TriggerPolicy as the current + triggering policy.
      +
      voidunregisterActuator(eu.artemis.demanes.reconfiguration.Actuator actuator) +
      + Remove a Actuator object from the collection of actuators.
      +
      voidunregisterObserver(eu.artemis.demanes.reconfiguration.Observer observer) +
      + Remove a Observer object from the collection of observers.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ORAMediatorForSunSPOT

        +
        public ORAMediatorForSunSPOT()
        +
      • +
      + + + +
        +
      • +

        ORAMediatorForSunSPOT

        +
        public ORAMediatorForSunSPOT(com.sun.spot.core.util.Properties properties)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setReasoner

        +
        public void setReasoner(eu.artemis.demanes.reconfiguration.Reasoner reasoner)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ORAMediator
        +

        + Set an object with the Reasoner as the current reasoner. + This reasoner object defines the behavior of the reconfiguration. +

        + +

        + There can only be one reasoner at a time, so if this function is called + when another reasoner is set, this function overwrites it. +

        +
        +
        Specified by:
        +
        setReasoner in interface eu.artemis.demanes.reconfiguration.ORAMediator
        +
        Parameters:
        +
        reasoner - an Object with the Reasoner specifying how the decisions + should be made to reconfigure the system.
        +
        +
      • +
      + + + +
        +
      • +

        setTriggeringPolicy

        +
        public void setTriggeringPolicy(eu.artemis.demanes.reconfiguration.TriggerPolicy triggerPolicy)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ORAMediator
        +

        + Set an object with the TriggerPolicy as the current + triggering policy. This policy object defines the when the + reconfiguration reasoner should be triggered. For example if the reasoner + should be triggered periodically or if a threshold is reached. +

        + +

        + There can only be one triggering policy at a time, so if this function is + called when another triggering policy is set, this function overwrites + it. +

        +
        +
        Specified by:
        +
        setTriggeringPolicy in interface eu.artemis.demanes.reconfiguration.ORAMediator
        +
        +
      • +
      + + + +
        +
      • +

        getActions

        +
        public java.util.Vector getActions()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ActionProvider
        +

        + Query the Actions that can be invoked using this ActionProvider +

        + +

        + The ActionProvider.invoke(ANES_URN, ANES_BUNDLE) function requires a + ANES_URN argument which identifies which action to invoke. By using this + function the user gets an array which indicate what the relevant + ANES_URNs can be used as a valid argument. +

        + +

        + If there are no possible actions that can be invokes, this function will + return null. +

        +
        +
        Specified by:
        +
        getActions in interface eu.artemis.demanes.reconfiguration.ActionProvider
        +
        Returns:
        +
        an Array of ANES_URNs that can be invoked using this + ActionProvider.
        +
        +
      • +
      + + + +
        +
      • +

        invoke

        +
        public void invoke(eu.artemis.demanes.datatypes.ANES_URN id,
        +                   eu.artemis.demanes.datatypes.ANES_BUNDLE arguments)
        +            throws eu.artemis.demanes.exceptions.InexistentActionID,
        +                   eu.artemis.demanes.exceptions.ActionInvocationException
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ActionProvider
        +

        + Invokes a specific Action in order to modify the system +

        + +

        + By calling this function, the user can specify that an Action with a + specific identifier should be invoked. This results internally in + invoking the corresponding Action. +

        +
        +
        Specified by:
        +
        invoke in interface eu.artemis.demanes.reconfiguration.ActionProvider
        +
        Parameters:
        +
        id - In order to resolve which Action to invoke, the identity of + the corresponding Action should be provided. To obtain a list + of available actions from this ActionProvider, use the + ActionProvider.getActions() function.
        +
        arguments - The arguments may indicate a specification of how the action + should be invoked. For instance in order to modify a parameter + of a component, the new parameter value can be one of the + elements in the argument list.
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.InexistentActionID - If the provided id can not be resolved by the ActionProvider, + an exception is thrown, indicating that the this identifier + does not exist. (As far as this ActionProvider concerns)
        +
        eu.artemis.demanes.exceptions.ActionInvocationException - Is thrown if the invoked action cannot successfully complete.
        +
        See Also:
        +
        Action.invoke(ANES_BUNDLE)
        +
        +
      • +
      + + + +
        +
      • +

        getObservations

        +
        public java.util.Vector getObservations()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ObservationProvider
        +

        + Query the Observations that can be obtained from this ObservationProvider +

        + +

        + The ObservationProvider.getValue(ANES_URN) function requires a ANES_URN + argument which identifies which observation to obtain. By using this + function the user gets an array which indicate what the relevant + ANES_URNs can be used as a valid argument. +

        + +

        + If there are no possible observations that can be obtained, this function + will return null. +

        +
        +
        Specified by:
        +
        getObservations in interface eu.artemis.demanes.reconfiguration.ObservationProvider
        +
        Returns:
        +
        Array of ANES_URN
        +
        +
      • +
      + + + +
        +
      • +

        getValue

        +
        public java.lang.Object getValue(eu.artemis.demanes.datatypes.ANES_URN id)
        +                          throws eu.artemis.demanes.exceptions.InexistentObservationID,
        +                                 eu.artemis.demanes.exceptions.ObservationInvocationException
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ObservationProvider
        +

        + Get the value of a specific Observation in order to monitor + the system +

        + +

        + By calling this function, the user can specify that an Observation with a + specific identifier should be invoked. This results internally in + invoking the corresponding Observation. +

        +
        +
        Specified by:
        +
        getValue in interface eu.artemis.demanes.reconfiguration.ObservationProvider
        +
        Parameters:
        +
        id - In order to resolve which Observation to invoke, the identity + of the corresponding Observation should be provided. To obtain a list of + available observations from this ObservationProvider, use the + ObservationProvider.getObservations() function.
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.InexistentObservationID - If the provided id can not be resolved by + the ObservationProvider, an exception is thrown, indicating that the this + identifier does not exist. (As far as this ObservationProvider concerns)
        +
        eu.artemis.demanes.exceptions.ObservationInvocationException - Is thrown if the observation + cannot successfully obtain it's information.
        +
        See Also:
        +
        Observation.getValue()
        +
        +
      • +
      + + + +
        +
      • +

        registerObserver

        +
        public void registerObserver(eu.artemis.demanes.reconfiguration.Observer observer)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ObserverRegistry
        +

        + Add a Observer object to the collection of observers by + which the ReasoningEngine can monitor the system. If the observer has + already been registered before, nothing changes. +

        +
        +
        Specified by:
        +
        registerObserver in interface eu.artemis.demanes.reconfiguration.ObserverRegistry
        +
        +
      • +
      + + + +
        +
      • +

        unregisterObserver

        +
        public void unregisterObserver(eu.artemis.demanes.reconfiguration.Observer observer)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ObserverRegistry
        +

        + Remove a Observer object from the collection of observers. + This function should be called before the observer is destroyed. If the + object was not registered before, nothing happens. +

        +
        +
        Specified by:
        +
        unregisterObserver in interface eu.artemis.demanes.reconfiguration.ObserverRegistry
        +
        +
      • +
      + + + +
        +
      • +

        registerActuator

        +
        public void registerActuator(eu.artemis.demanes.reconfiguration.Actuator actuator)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ActuatorRegistry
        +

        + Add a Actuator object to the collection of actuators by + which the ReasoningEngine can modify the system. If the actuator has + already been registered before, nothing changes. +

        +
        +
        Specified by:
        +
        registerActuator in interface eu.artemis.demanes.reconfiguration.ActuatorRegistry
        +
        Parameters:
        +
        actuator - the Actuator to register.
        +
        +
      • +
      + + + +
        +
      • +

        unregisterActuator

        +
        public void unregisterActuator(eu.artemis.demanes.reconfiguration.Actuator actuator)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ActuatorRegistry
        +

        + Remove a Actuator object from the collection of actuators. + This function should be called before the actuator is destroyed. If the + object was not registered before, nothing happens. +

        +
        +
        Specified by:
        +
        unregisterActuator in interface eu.artemis.demanes.reconfiguration.ActuatorRegistry
        +
        Parameters:
        +
        actuator - the object that no longer can be used.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.html.mine new file mode 100644 index 0000000..a064cdf --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.html.mine @@ -0,0 +1,630 @@ + + + + + +ORAMediatorForSunSPOT (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration
+

Class ORAMediatorForSunSPOT

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.ActionProvider, eu.artemis.demanes.reconfiguration.ActuatorRegistry, eu.artemis.demanes.reconfiguration.ObservationProvider, eu.artemis.demanes.reconfiguration.ObserverRegistry, eu.artemis.demanes.reconfiguration.ORAMediator
    +
    +
    +
    +
    public class ORAMediatorForSunSPOT
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.ORAMediator, eu.artemis.demanes.reconfiguration.ActionProvider, eu.artemis.demanes.reconfiguration.ObservationProvider
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      java.util.VectorgetActions() +
      + Query the Actions that can be invoked using this ActionProvider
      +
      java.util.VectorgetObservations() +
      + Query the Observations that can be obtained from this ObservationProvider
      +
      java.lang.ObjectgetValue(eu.artemis.demanes.datatypes.ANES_URN id) +
      + Get the value of a specific Observation in order to monitor + the system
      +
      voidinvoke(eu.artemis.demanes.datatypes.ANES_URN id, + eu.artemis.demanes.datatypes.ANES_BUNDLE arguments) +
      + Invokes a specific Action in order to modify the system
      +
      voidregisterActuator(eu.artemis.demanes.reconfiguration.Actuator actuator) +
      + Add a Actuator object to the collection of actuators by + which the ReasoningEngine can modify the system.
      +
      voidregisterObserver(eu.artemis.demanes.reconfiguration.Observer observer) +
      + Add a Observer object to the collection of observers by + which the ReasoningEngine can monitor the system.
      +
      voidsetReasoner(eu.artemis.demanes.reconfiguration.Reasoner reasoner) +
      + Set an object with the Reasoner as the current reasoner.
      +
      voidsetTriggeringPolicy(eu.artemis.demanes.reconfiguration.TriggerPolicy triggerPolicy) +
      + Set an object with the TriggerPolicy as the current + triggering policy.
      +
      voidunregisterActuator(eu.artemis.demanes.reconfiguration.Actuator actuator) +
      + Remove a Actuator object from the collection of actuators.
      +
      voidunregisterObserver(eu.artemis.demanes.reconfiguration.Observer observer) +
      + Remove a Observer object from the collection of observers.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ORAMediatorForSunSPOT

        +
        public ORAMediatorForSunSPOT()
        +
      • +
      + + + +
        +
      • +

        ORAMediatorForSunSPOT

        +
        public ORAMediatorForSunSPOT(com.sun.spot.core.util.Properties properties)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setReasoner

        +
        public void setReasoner(eu.artemis.demanes.reconfiguration.Reasoner reasoner)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ORAMediator
        +

        + Set an object with the Reasoner as the current reasoner. + This reasoner object defines the behavior of the reconfiguration. +

        + +

        + There can only be one reasoner at a time, so if this function is called + when another reasoner is set, this function overwrites it. +

        +
        +
        Specified by:
        +
        setReasoner in interface eu.artemis.demanes.reconfiguration.ORAMediator
        +
        Parameters:
        +
        reasoner - an Object with the Reasoner specifying how the decisions + should be made to reconfigure the system.
        +
        +
      • +
      + + + +
        +
      • +

        setTriggeringPolicy

        +
        public void setTriggeringPolicy(eu.artemis.demanes.reconfiguration.TriggerPolicy triggerPolicy)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ORAMediator
        +

        + Set an object with the TriggerPolicy as the current + triggering policy. This policy object defines the when the + reconfiguration reasoner should be triggered. For example if the reasoner + should be triggered periodically or if a threshold is reached. +

        + +

        + There can only be one triggering policy at a time, so if this function is + called when another triggering policy is set, this function overwrites + it. +

        +
        +
        Specified by:
        +
        setTriggeringPolicy in interface eu.artemis.demanes.reconfiguration.ORAMediator
        +
        +
      • +
      + + + +
        +
      • +

        getActions

        +
        public java.util.Vector getActions()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ActionProvider
        +

        + Query the Actions that can be invoked using this ActionProvider +

        + +

        + The ActionProvider.invoke(ANES_URN, ANES_BUNDLE) function requires a + ANES_URN argument which identifies which action to invoke. By using this + function the user gets an array which indicate what the relevant + ANES_URNs can be used as a valid argument. +

        + +

        + If there are no possible actions that can be invokes, this function will + return null. +

        +
        +
        Specified by:
        +
        getActions in interface eu.artemis.demanes.reconfiguration.ActionProvider
        +
        Returns:
        +
        an Array of ANES_URNs that can be invoked using this + ActionProvider.
        +
        +
      • +
      + + + +
        +
      • +

        invoke

        +
        public void invoke(eu.artemis.demanes.datatypes.ANES_URN id,
        +                   eu.artemis.demanes.datatypes.ANES_BUNDLE arguments)
        +            throws eu.artemis.demanes.exceptions.InexistentActionID,
        +                   eu.artemis.demanes.exceptions.ActionInvocationException
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ActionProvider
        +

        + Invokes a specific Action in order to modify the system +

        + +

        + By calling this function, the user can specify that an Action with a + specific identifier should be invoked. This results internally in + invoking the corresponding Action. +

        +
        +
        Specified by:
        +
        invoke in interface eu.artemis.demanes.reconfiguration.ActionProvider
        +
        Parameters:
        +
        id - In order to resolve which Action to invoke, the identity of + the corresponding Action should be provided. To obtain a list + of available actions from this ActionProvider, use the + ActionProvider.getActions() function.
        +
        arguments - The arguments may indicate a specification of how the action + should be invoked. For instance in order to modify a parameter + of a component, the new parameter value can be one of the + elements in the argument list.
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.InexistentActionID - If the provided id can not be resolved by the ActionProvider, + an exception is thrown, indicating that the this identifier + does not exist. (As far as this ActionProvider concerns)
        +
        eu.artemis.demanes.exceptions.ActionInvocationException - Is thrown if the invoked action cannot successfully complete.
        +
        See Also:
        +
        Action.invoke(ANES_BUNDLE)
        +
        +
      • +
      + + + +
        +
      • +

        getObservations

        +
        public java.util.Vector getObservations()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ObservationProvider
        +

        + Query the Observations that can be obtained from this ObservationProvider +

        + +

        + The ObservationProvider.getValue(ANES_URN) function requires a ANES_URN + argument which identifies which observation to obtain. By using this + function the user gets an array which indicate what the relevant + ANES_URNs can be used as a valid argument. +

        + +

        + If there are no possible observations that can be obtained, this function + will return null. +

        +
        +
        Specified by:
        +
        getObservations in interface eu.artemis.demanes.reconfiguration.ObservationProvider
        +
        Returns:
        +
        Array of ANES_URN
        +
        +
      • +
      + + + +
        +
      • +

        getValue

        +
        public java.lang.Object getValue(eu.artemis.demanes.datatypes.ANES_URN id)
        +                          throws eu.artemis.demanes.exceptions.InexistentObservationID,
        +                                 eu.artemis.demanes.exceptions.ObservationInvocationException
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ObservationProvider
        +

        + Get the value of a specific Observation in order to monitor + the system +

        + +

        + By calling this function, the user can specify that an Observation with a + specific identifier should be invoked. This results internally in + invoking the corresponding Observation. +

        +
        +
        Specified by:
        +
        getValue in interface eu.artemis.demanes.reconfiguration.ObservationProvider
        +
        Parameters:
        +
        id - In order to resolve which Observation to invoke, the identity + of the corresponding Observation should be provided. To obtain a list of + available observations from this ObservationProvider, use the + ObservationProvider.getObservations() function.
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.InexistentObservationID - If the provided id can not be resolved by + the ObservationProvider, an exception is thrown, indicating that the this + identifier does not exist. (As far as this ObservationProvider concerns)
        +
        eu.artemis.demanes.exceptions.ObservationInvocationException - Is thrown if the observation + cannot successfully obtain it's information.
        +
        See Also:
        +
        Observation.getValue()
        +
        +
      • +
      + + + +
        +
      • +

        registerObserver

        +
        public void registerObserver(eu.artemis.demanes.reconfiguration.Observer observer)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ObserverRegistry
        +

        + Add a Observer object to the collection of observers by + which the ReasoningEngine can monitor the system. If the observer has + already been registered before, nothing changes. +

        +
        +
        Specified by:
        +
        registerObserver in interface eu.artemis.demanes.reconfiguration.ObserverRegistry
        +
        +
      • +
      + + + +
        +
      • +

        unregisterObserver

        +
        public void unregisterObserver(eu.artemis.demanes.reconfiguration.Observer observer)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ObserverRegistry
        +

        + Remove a Observer object from the collection of observers. + This function should be called before the observer is destroyed. If the + object was not registered before, nothing happens. +

        +
        +
        Specified by:
        +
        unregisterObserver in interface eu.artemis.demanes.reconfiguration.ObserverRegistry
        +
        +
      • +
      + + + +
        +
      • +

        registerActuator

        +
        public void registerActuator(eu.artemis.demanes.reconfiguration.Actuator actuator)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ActuatorRegistry
        +

        + Add a Actuator object to the collection of actuators by + which the ReasoningEngine can modify the system. If the actuator has + already been registered before, nothing changes. +

        +
        +
        Specified by:
        +
        registerActuator in interface eu.artemis.demanes.reconfiguration.ActuatorRegistry
        +
        Parameters:
        +
        actuator - the Actuator to register.
        +
        +
      • +
      + + + +
        +
      • +

        unregisterActuator

        +
        public void unregisterActuator(eu.artemis.demanes.reconfiguration.Actuator actuator)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ActuatorRegistry
        +

        + Remove a Actuator object from the collection of actuators. + This function should be called before the actuator is destroyed. If the + object was not registered before, nothing happens. +

        +
        +
        Specified by:
        +
        unregisterActuator in interface eu.artemis.demanes.reconfiguration.ActuatorRegistry
        +
        Parameters:
        +
        actuator - the object that no longer can be used.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.html.r390 new file mode 100644 index 0000000..d80b05b --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.html.r390 @@ -0,0 +1,616 @@ + + + + + +ORAMediatorForSunSPOT (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration
+

Class ORAMediatorForSunSPOT

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.ActionProvider, eu.artemis.demanes.reconfiguration.ActuatorRegistry, eu.artemis.demanes.reconfiguration.ObservationProvider, eu.artemis.demanes.reconfiguration.ObserverRegistry, eu.artemis.demanes.reconfiguration.ORAMediator
    +
    +
    +
    +
    public class ORAMediatorForSunSPOT
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.ORAMediator, eu.artemis.demanes.reconfiguration.ActionProvider, eu.artemis.demanes.reconfiguration.ObservationProvider
    +
    Author:
    +
    Néstor Lucas Martínez
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.util.VectorgetActions() +
      + Query the Actions that can be invoked using this ActionProvider + + + + The ActionProvider.invoke(ANES_URN, ANES_BUNDLE) function requires a + ANES_URN argument which identifies which action to invoke.
      +
      java.util.VectorgetObservations() +
      + Query the Observations that can be obtained from this ObservationProvider + + + + The ObservationProvider.getValue(ANES_URN) function requires a ANES_URN + argument which identifies which observation to obtain.
      +
      java.lang.ObjectgetValue(eu.artemis.demanes.datatypes.ANES_URN id) +
      + Get the value of a specific Observation in order to monitor + the system + + + + By calling this function, the user can specify that an Observation with a + specific identifier should be invoked.
      +
      voidinvoke(eu.artemis.demanes.datatypes.ANES_URN id, + eu.artemis.demanes.datatypes.ANES_BUNDLE arguments) +
      + Invokes a specific Action in order to modify the system + + + + By calling this function, the user can specify that an Action with a + specific identifier should be invoked.
      +
      voidregisterActuator(eu.artemis.demanes.reconfiguration.Actuator actuator) +
      + Add a Actuator object to the collection of actuators by + which the ReasoningEngine can modify the system.
      +
      voidregisterObserver(eu.artemis.demanes.reconfiguration.Observer observer) +
      + Add a Observer object to the collection of observers by + which the ReasoningEngine can monitor the system.
      +
      voidsetReasoner(eu.artemis.demanes.reconfiguration.Reasoner reasoner) +
      + Set an object with the Reasoner as the current reasoner.
      +
      voidsetTriggeringPolicy(eu.artemis.demanes.reconfiguration.TriggerPolicy triggerPolicy) +
      + Set an object with the TriggerPolicy as the current + triggering policy.
      +
      voidunregisterActuator(eu.artemis.demanes.reconfiguration.Actuator actuator) +
      + Remove a Actuator object from the collection of actuators.
      +
      voidunregisterObserver(eu.artemis.demanes.reconfiguration.Observer observer) +
      + Remove a Observer object from the collection of observers.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ORAMediatorForSunSPOT

        +
        public ORAMediatorForSunSPOT()
        +
      • +
      + + + +
        +
      • +

        ORAMediatorForSunSPOT

        +
        public ORAMediatorForSunSPOT(com.sun.spot.core.util.Properties properties)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setReasoner

        +
        public void setReasoner(eu.artemis.demanes.reconfiguration.Reasoner reasoner)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ORAMediator
        +

        + Set an object with the Reasoner as the current reasoner. + This reasoner object defines the behavior of the reconfiguration. +

        + +

        + There can only be one reasoner at a time, so if this function is called + when another reasoner is set, this function overwrites it. +

        +
        +
        Specified by:
        +
        setReasoner in interface eu.artemis.demanes.reconfiguration.ORAMediator
        +
        Parameters:
        reasoner - an Object with the Reasoner specifying how the decisions + should be made to reconfigure the system.
        +
      • +
      + + + +
        +
      • +

        setTriggeringPolicy

        +
        public void setTriggeringPolicy(eu.artemis.demanes.reconfiguration.TriggerPolicy triggerPolicy)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ORAMediator
        +

        + Set an object with the TriggerPolicy as the current + triggering policy. This policy object defines the when the + reconfiguration reasoner should be triggered. For example if the reasoner + should be triggered periodically or if a threshold is reached. +

        + +

        + There can only be one triggering policy at a time, so if this function is + called when another triggering policy is set, this function overwrites + it. +

        +
        +
        Specified by:
        +
        setTriggeringPolicy in interface eu.artemis.demanes.reconfiguration.ORAMediator
        +
        +
      • +
      + + + +
        +
      • +

        getActions

        +
        public java.util.Vector getActions()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ActionProvider
        +

        + Query the Actions that can be invoked using this ActionProvider +

        + +

        + The ActionProvider.invoke(ANES_URN, ANES_BUNDLE) function requires a + ANES_URN argument which identifies which action to invoke. By using this + function the user gets an array which indicate what the relevant + ANES_URNs can be used as a valid argument. +

        + +

        + If there are no possible actions that can be invokes, this function will + return null. +

        +
        +
        Specified by:
        +
        getActions in interface eu.artemis.demanes.reconfiguration.ActionProvider
        +
        Returns:
        an Array of ANES_URNs that can be invoked using this + ActionProvider.
        +
      • +
      + + + +
        +
      • +

        invoke

        +
        public void invoke(eu.artemis.demanes.datatypes.ANES_URN id,
        +          eu.artemis.demanes.datatypes.ANES_BUNDLE arguments)
        +            throws eu.artemis.demanes.exceptions.InexistentActionID,
        +                   eu.artemis.demanes.exceptions.ActionInvocationException
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ActionProvider
        +

        + Invokes a specific Action in order to modify the system +

        + +

        + By calling this function, the user can specify that an Action with a + specific identifier should be invoked. This results internally in + invoking the corresponding Action. +

        +
        +
        Specified by:
        +
        invoke in interface eu.artemis.demanes.reconfiguration.ActionProvider
        +
        Parameters:
        id - In order to resolve which Action to invoke, the identity of + the corresponding Action should be provided. To obtain a list + of available actions from this ActionProvider, use the + ActionProvider.getActions() function.
        arguments - The arguments may indicate a specification of how the action + should be invoked. For instance in order to modify a parameter + of a component, the new parameter value can be one of the + elements in the argument list.
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.InexistentActionID - If the provided id can not be resolved by the ActionProvider, + an exception is thrown, indicating that the this identifier + does not exist. (As far as this ActionProvider concerns)
        +
        eu.artemis.demanes.exceptions.ActionInvocationException - Is thrown if the invoked action cannot successfully complete.
        See Also:
        Action.invoke(ANES_BUNDLE)
        +
      • +
      + + + +
        +
      • +

        getObservations

        +
        public java.util.Vector getObservations()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ObservationProvider
        +

        + Query the Observations that can be obtained from this ObservationProvider +

        + +

        + The ObservationProvider.getValue(ANES_URN) function requires a ANES_URN + argument which identifies which observation to obtain. By using this + function the user gets an array which indicate what the relevant + ANES_URNs can be used as a valid argument. +

        + +

        + If there are no possible observations that can be obtained, this function + will return null. +

        +
        +
        Specified by:
        +
        getObservations in interface eu.artemis.demanes.reconfiguration.ObservationProvider
        +
        Returns:
        Array of ANES_URN
        +
      • +
      + + + +
        +
      • +

        getValue

        +
        public java.lang.Object getValue(eu.artemis.demanes.datatypes.ANES_URN id)
        +                          throws eu.artemis.demanes.exceptions.InexistentObservationID,
        +                                 eu.artemis.demanes.exceptions.ObservationInvocationException
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ObservationProvider
        +

        + Get the value of a specific Observation in order to monitor + the system +

        + +

        + By calling this function, the user can specify that an Observation with a + specific identifier should be invoked. This results internally in + invoking the corresponding Observation. +

        +
        +
        Specified by:
        +
        getValue in interface eu.artemis.demanes.reconfiguration.ObservationProvider
        +
        Parameters:
        id - In order to resolve which Observation to invoke, the identity + of the corresponding Observation should be provided. To obtain + a list of available observations from this + ObservationProvider, use the ObservationProvider.getObservations() + function.
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.InexistentObservationID - If the provided id can not be resolved by the + ObservationProvider, an exception is thrown, indicating that + the this identifier does not exist. (As far as this + ObservationProvider concerns)
        +
        eu.artemis.demanes.exceptions.ObservationInvocationException - Is thrown if the observation cannot successfully obtain it's + information.
        See Also:
        Observation.getValue()
        +
      • +
      + + + +
        +
      • +

        registerObserver

        +
        public void registerObserver(eu.artemis.demanes.reconfiguration.Observer observer)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ObserverRegistry
        +

        + Add a Observer object to the collection of observers by + which the ReasoningEngine can monitor the system. If the observer has + already been registered before, nothing changes. +

        +
        +
        Specified by:
        +
        registerObserver in interface eu.artemis.demanes.reconfiguration.ObserverRegistry
        +
        +
      • +
      + + + +
        +
      • +

        unregisterObserver

        +
        public void unregisterObserver(eu.artemis.demanes.reconfiguration.Observer observer)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ObserverRegistry
        +

        + Remove a Observer object from the collection of observers. + This function should be called before the observer is destroyed. If the + object was not registered before, nothing happens. +

        +
        +
        Specified by:
        +
        unregisterObserver in interface eu.artemis.demanes.reconfiguration.ObserverRegistry
        +
        +
      • +
      + + + +
        +
      • +

        registerActuator

        +
        public void registerActuator(eu.artemis.demanes.reconfiguration.Actuator actuator)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ActuatorRegistry
        +

        + Add a Actuator object to the collection of actuators by + which the ReasoningEngine can modify the system. If the actuator has + already been registered before, nothing changes. +

        +
        +
        Specified by:
        +
        registerActuator in interface eu.artemis.demanes.reconfiguration.ActuatorRegistry
        +
        Parameters:
        actuator - the Actuator to register.
        +
      • +
      + + + +
        +
      • +

        unregisterActuator

        +
        public void unregisterActuator(eu.artemis.demanes.reconfiguration.Actuator actuator)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ActuatorRegistry
        +

        + Remove a Actuator object from the collection of actuators. + This function should be called before the actuator is destroyed. If the + object was not registered before, nothing happens. +

        +
        +
        Specified by:
        +
        unregisterActuator in interface eu.artemis.demanes.reconfiguration.ActuatorRegistry
        +
        Parameters:
        actuator - the object that no longer can be used.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.html.r409 new file mode 100644 index 0000000..9e18c96 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.html.r409 @@ -0,0 +1,650 @@ + + + + + +ORAMediatorForSunSPOT (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration
+

Class ORAMediatorForSunSPOT

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.ActionProvider, eu.artemis.demanes.reconfiguration.ActuatorRegistry, eu.artemis.demanes.reconfiguration.ObservationProvider, eu.artemis.demanes.reconfiguration.ObserverRegistry, eu.artemis.demanes.reconfiguration.ORAMediator
    +
    +
    +
    +
    public class ORAMediatorForSunSPOT
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.ORAMediator, eu.artemis.demanes.reconfiguration.ActionProvider, eu.artemis.demanes.reconfiguration.ObservationProvider
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      java.util.VectorgetActions() +
      + Query the Actions that can be invoked using this ActionProvider + + + + The ActionProvider.invoke(ANES_URN, ANES_BUNDLE) function requires a + ANES_URN argument which identifies which action to invoke.
      +
      java.util.VectorgetObservations() +
      + Query the Observations that can be obtained from this ObservationProvider + + + + The ObservationProvider.getValue(ANES_URN) function requires a ANES_URN + argument which identifies which observation to obtain.
      +
      java.lang.ObjectgetValue(eu.artemis.demanes.datatypes.ANES_URN id) +
      + Get the value of a specific Observation in order to monitor + the system + + + + By calling this function, the user can specify that an Observation with a + specific identifier should be invoked.
      +
      voidinvoke(eu.artemis.demanes.datatypes.ANES_URN id, + eu.artemis.demanes.datatypes.ANES_BUNDLE arguments) +
      + Invokes a specific Action in order to modify the system + + + + By calling this function, the user can specify that an Action with a + specific identifier should be invoked.
      +
      voidregisterActuator(eu.artemis.demanes.reconfiguration.Actuator actuator) +
      + Add a Actuator object to the collection of actuators by + which the ReasoningEngine can modify the system.
      +
      voidregisterObserver(eu.artemis.demanes.reconfiguration.Observer observer) +
      + Add a Observer object to the collection of observers by + which the ReasoningEngine can monitor the system.
      +
      voidsetReasoner(eu.artemis.demanes.reconfiguration.Reasoner reasoner) +
      + Set an object with the Reasoner as the current reasoner.
      +
      voidsetTriggeringPolicy(eu.artemis.demanes.reconfiguration.TriggerPolicy triggerPolicy) +
      + Set an object with the TriggerPolicy as the current + triggering policy.
      +
      voidunregisterActuator(eu.artemis.demanes.reconfiguration.Actuator actuator) +
      + Remove a Actuator object from the collection of actuators.
      +
      voidunregisterObserver(eu.artemis.demanes.reconfiguration.Observer observer) +
      + Remove a Observer object from the collection of observers.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ORAMediatorForSunSPOT

        +
        public ORAMediatorForSunSPOT()
        +
      • +
      + + + +
        +
      • +

        ORAMediatorForSunSPOT

        +
        public ORAMediatorForSunSPOT(com.sun.spot.core.util.Properties properties)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setReasoner

        +
        public void setReasoner(eu.artemis.demanes.reconfiguration.Reasoner reasoner)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ORAMediator
        +

        + Set an object with the Reasoner as the current reasoner. + This reasoner object defines the behavior of the reconfiguration. +

        + +

        + There can only be one reasoner at a time, so if this function is called + when another reasoner is set, this function overwrites it. +

        +
        +
        Specified by:
        +
        setReasoner in interface eu.artemis.demanes.reconfiguration.ORAMediator
        +
        Parameters:
        +
        reasoner - an Object with the Reasoner specifying how the decisions + should be made to reconfigure the system.
        +
        +
      • +
      + + + +
        +
      • +

        setTriggeringPolicy

        +
        public void setTriggeringPolicy(eu.artemis.demanes.reconfiguration.TriggerPolicy triggerPolicy)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ORAMediator
        +

        + Set an object with the TriggerPolicy as the current + triggering policy. This policy object defines the when the + reconfiguration reasoner should be triggered. For example if the reasoner + should be triggered periodically or if a threshold is reached. +

        + +

        + There can only be one triggering policy at a time, so if this function is + called when another triggering policy is set, this function overwrites + it. +

        +
        +
        Specified by:
        +
        setTriggeringPolicy in interface eu.artemis.demanes.reconfiguration.ORAMediator
        +
        +
      • +
      + + + +
        +
      • +

        getActions

        +
        public java.util.Vector getActions()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ActionProvider
        +

        + Query the Actions that can be invoked using this ActionProvider +

        + +

        + The ActionProvider.invoke(ANES_URN, ANES_BUNDLE) function requires a + ANES_URN argument which identifies which action to invoke. By using this + function the user gets an array which indicate what the relevant + ANES_URNs can be used as a valid argument. +

        + +

        + If there are no possible actions that can be invokes, this function will + return null. +

        +
        +
        Specified by:
        +
        getActions in interface eu.artemis.demanes.reconfiguration.ActionProvider
        +
        Returns:
        +
        an Array of ANES_URNs that can be invoked using this + ActionProvider.
        +
        +
      • +
      + + + +
        +
      • +

        invoke

        +
        public void invoke(eu.artemis.demanes.datatypes.ANES_URN id,
        +                   eu.artemis.demanes.datatypes.ANES_BUNDLE arguments)
        +            throws eu.artemis.demanes.exceptions.InexistentActionID,
        +                   eu.artemis.demanes.exceptions.ActionInvocationException
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ActionProvider
        +

        + Invokes a specific Action in order to modify the system +

        + +

        + By calling this function, the user can specify that an Action with a + specific identifier should be invoked. This results internally in + invoking the corresponding Action. +

        +
        +
        Specified by:
        +
        invoke in interface eu.artemis.demanes.reconfiguration.ActionProvider
        +
        Parameters:
        +
        id - In order to resolve which Action to invoke, the identity of + the corresponding Action should be provided. To obtain a list + of available actions from this ActionProvider, use the + ActionProvider.getActions() function.
        +
        arguments - The arguments may indicate a specification of how the action + should be invoked. For instance in order to modify a parameter + of a component, the new parameter value can be one of the + elements in the argument list.
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.InexistentActionID - If the provided id can not be resolved by the ActionProvider, + an exception is thrown, indicating that the this identifier + does not exist. (As far as this ActionProvider concerns)
        +
        eu.artemis.demanes.exceptions.ActionInvocationException - Is thrown if the invoked action cannot successfully complete.
        +
        See Also:
        +
        Action.invoke(ANES_BUNDLE)
        +
        +
      • +
      + + + +
        +
      • +

        getObservations

        +
        public java.util.Vector getObservations()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ObservationProvider
        +

        + Query the Observations that can be obtained from this ObservationProvider +

        + +

        + The ObservationProvider.getValue(ANES_URN) function requires a ANES_URN + argument which identifies which observation to obtain. By using this + function the user gets an array which indicate what the relevant + ANES_URNs can be used as a valid argument. +

        + +

        + If there are no possible observations that can be obtained, this function + will return null. +

        +
        +
        Specified by:
        +
        getObservations in interface eu.artemis.demanes.reconfiguration.ObservationProvider
        +
        Returns:
        +
        Array of ANES_URN
        +
        +
      • +
      + + + +
        +
      • +

        getValue

        +
        public java.lang.Object getValue(eu.artemis.demanes.datatypes.ANES_URN id)
        +                          throws eu.artemis.demanes.exceptions.InexistentObservationID,
        +                                 eu.artemis.demanes.exceptions.ObservationInvocationException
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ObservationProvider
        +

        + Get the value of a specific Observation in order to monitor + the system +

        + +

        + By calling this function, the user can specify that an Observation with a + specific identifier should be invoked. This results internally in + invoking the corresponding Observation. +

        +
        +
        Specified by:
        +
        getValue in interface eu.artemis.demanes.reconfiguration.ObservationProvider
        +
        Parameters:
        +
        id - In order to resolve which Observation to invoke, the identity + of the corresponding Observation should be provided. To obtain a list of + available observations from this ObservationProvider, use the + ObservationProvider.getObservations() function.
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.InexistentObservationID - If the provided id can not be resolved by + the ObservationProvider, an exception is thrown, indicating that the this + identifier does not exist. (As far as this ObservationProvider concerns)
        +
        eu.artemis.demanes.exceptions.ObservationInvocationException - Is thrown if the observation + cannot successfully obtain it's information.
        +
        See Also:
        +
        Observation.getValue()
        +
        +
      • +
      + + + +
        +
      • +

        registerObserver

        +
        public void registerObserver(eu.artemis.demanes.reconfiguration.Observer observer)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ObserverRegistry
        +

        + Add a Observer object to the collection of observers by + which the ReasoningEngine can monitor the system. If the observer has + already been registered before, nothing changes. +

        +
        +
        Specified by:
        +
        registerObserver in interface eu.artemis.demanes.reconfiguration.ObserverRegistry
        +
        +
      • +
      + + + +
        +
      • +

        unregisterObserver

        +
        public void unregisterObserver(eu.artemis.demanes.reconfiguration.Observer observer)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ObserverRegistry
        +

        + Remove a Observer object from the collection of observers. + This function should be called before the observer is destroyed. If the + object was not registered before, nothing happens. +

        +
        +
        Specified by:
        +
        unregisterObserver in interface eu.artemis.demanes.reconfiguration.ObserverRegistry
        +
        +
      • +
      + + + +
        +
      • +

        registerActuator

        +
        public void registerActuator(eu.artemis.demanes.reconfiguration.Actuator actuator)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ActuatorRegistry
        +

        + Add a Actuator object to the collection of actuators by + which the ReasoningEngine can modify the system. If the actuator has + already been registered before, nothing changes. +

        +
        +
        Specified by:
        +
        registerActuator in interface eu.artemis.demanes.reconfiguration.ActuatorRegistry
        +
        Parameters:
        +
        actuator - the Actuator to register.
        +
        +
      • +
      + + + +
        +
      • +

        unregisterActuator

        +
        public void unregisterActuator(eu.artemis.demanes.reconfiguration.Actuator actuator)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.ActuatorRegistry
        +

        + Remove a Actuator object from the collection of actuators. + This function should be called before the actuator is destroyed. If the + object was not registered before, nothing happens. +

        +
        +
        Specified by:
        +
        unregisterActuator in interface eu.artemis.demanes.reconfiguration.ActuatorRegistry
        +
        Parameters:
        +
        actuator - the object that no longer can be used.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor.html new file mode 100644 index 0000000..72b351c --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor.html @@ -0,0 +1,602 @@ + + + + + +PowerScalingMonitor (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor
+

Class PowerScalingMonitor

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.Observer, eu.artemis.demanes.reconfiguration.TriggerPolicy
    +
    +
    +
    +
    public class PowerScalingMonitor
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.TriggerPolicy, eu.artemis.demanes.reconfiguration.Observer
    +
    +
    Author:
    +
    grys
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static intCREATED 
      static intDIED 
      static intSTARTED 
      static intSUSPENDED 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      PowerScalingMonitor(SystemContext context, + com.sun.spot.core.util.Properties reconfigurationProperties) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      java.util.VectorgetObservations() +
      + In order for the user to obtain all Observationss which + provide information about the system component, this function returns an + array of observations which are available.
      +
      intgetState() 
      voidregisterTriggerable(eu.artemis.demanes.reconfiguration.Triggerable t) +
      + Add a Triggerable object to the collection of objects to + trigger whenever the policy intends to do so.
      +
      voidresume() +
      + Resumes the trigger policy activity if it is suspended.
      +
      voidsetInterval(long interval) 
      voidsetState(int state) 
      voidstart() +
      + Runs the trigger policy.
      +
      voidstop() +
      + Stops the functioning of the trigger policy.
      +
      voidsuspend() +
      + Temporarily suspends the firing of the triggerable object.
      +
      voidunregisterTriggerable(eu.artemis.demanes.reconfiguration.Triggerable t) +
      + Remove a Triggerable object from the collection of objects + to trigger whenever the policy intends to do so.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PowerScalingMonitor

        +
        public PowerScalingMonitor(SystemContext context,
        +                           com.sun.spot.core.util.Properties reconfigurationProperties)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        registerTriggerable

        +
        public void registerTriggerable(eu.artemis.demanes.reconfiguration.Triggerable t)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Add a Triggerable object to the collection of objects to + trigger whenever the policy intends to do so. If the object has already + been registered before, nothing changes. +

        +
        +
        Specified by:
        +
        registerTriggerable in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        Parameters:
        +
        t - the object to trigger
        +
        +
      • +
      + + + +
        +
      • +

        resume

        +
        public void resume()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Resumes the trigger policy activity if it is suspended. Calling this + function when the trigger policy is stopped, or started has no effect. + Resuming may cause immediate firing of the triggerable object. +

        +
        +
        Specified by:
        +
        resume in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        +
      • +
      + + + +
        +
      • +

        start

        +
        public void start()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Runs the trigger policy. After this call, the trigger policy will + determine the conditions and regularity in which the triggerable object + will be fired. Starting may cause the immediate firing of the triggerable + object. +

        + +

        + If start is invoked and the trigger policy is not in stopped state, it + will have no effect. +

        +
        +
        Specified by:
        +
        start in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        +
      • +
      + + + +
        +
      • +

        stop

        +
        public void stop()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Stops the functioning of the trigger policy. After this method is invoked + there will be no firing of the triggerable object which was registered. + Additionally the internal state of the Triggerpolicy (if any) is cleared. +

        +
        +
        Specified by:
        +
        stop in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        +
      • +
      + + + +
        +
      • +

        suspend

        +
        public void suspend()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Temporarily suspends the firing of the triggerable object. The normal + functioning of the trigger policy must be resumed by using the resume() + method. +

        +
        +
        Specified by:
        +
        suspend in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        +
      • +
      + + + +
        +
      • +

        unregisterTriggerable

        +
        public void unregisterTriggerable(eu.artemis.demanes.reconfiguration.Triggerable t)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Remove a Triggerable object from the collection of objects + to trigger whenever the policy intends to do so. If the object was not + registered before, nothing changes +

        +
        +
        Specified by:
        +
        unregisterTriggerable in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        Parameters:
        +
        t - the object that no longer needs to be triggered
        +
        +
      • +
      + + + +
        +
      • +

        getObservations

        +
        public java.util.Vector getObservations()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Observer
        +

        + In order for the user to obtain all Observationss which + provide information about the system component, this function returns an + array of observations which are available. +

        + +

        + If there are no observations available this function returns null +

        +
        +
        Specified by:
        +
        getObservations in interface eu.artemis.demanes.reconfiguration.Observer
        +
        Returns:
        +
        an Array or Observations that may be used to obtain information + about the system
        +
        +
      • +
      + + + +
        +
      • +

        setState

        +
        public void setState(int state)
        +
      • +
      + + + +
        +
      • +

        getState

        +
        public int getState()
        +
      • +
      + + + +
        +
      • +

        setInterval

        +
        public void setInterval(long interval)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/package-frame.html new file mode 100644 index 0000000..7d22787 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/package-frame.html @@ -0,0 +1,20 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor

+
+

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/package-summary.html new file mode 100644 index 0000000..b1d468c --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/package-summary.html @@ -0,0 +1,142 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor

+
+
+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/package-tree.html new file mode 100644 index 0000000..7f864fe --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/package-tree.html @@ -0,0 +1,137 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor (implements eu.artemis.demanes.reconfiguration.Observer, eu.artemis.demanes.reconfiguration.TriggerPolicy)
    • +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerTransmissionActuator.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerTransmissionActuator.html new file mode 100644 index 0000000..9a81ac6 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerTransmissionActuator.html @@ -0,0 +1,294 @@ + + + + + +PowerTransmissionActuator (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration
+

Class PowerTransmissionActuator

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerTransmissionActuator
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.Actuator
    +
    +
    +
    +
    public class PowerTransmissionActuator
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.Actuator
    +
    Author:
    +
    Néstor Lucas Martínez
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.util.VectorgetActions() +
      + In order for the user to obtain all Actions by which a + system component may be changed, this function returns an array of + actions which are available.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PowerTransmissionActuator

        +
        public PowerTransmissionActuator()
        +
      • +
      + + + +
        +
      • +

        PowerTransmissionActuator

        +
        public PowerTransmissionActuator(com.sun.spot.core.util.Properties contextProperties)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getActions

        +
        public java.util.Vector getActions()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Actuator
        +

        + In order for the user to obtain all Actions by which a + system component may be changed, this function returns an array of + actions which are available. +

        + +

        + If there are no actions available this function returns null +

        +
        +
        Specified by:
        +
        getActions in interface eu.artemis.demanes.reconfiguration.Actuator
        +
        Returns:
        an Array or Actions that may be invoked to reconfigure the system
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator.html new file mode 100644 index 0000000..8ed8018 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator.html @@ -0,0 +1,314 @@ + + + + + +PowerTransmissionActuator (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions
+

Class PowerTransmissionActuator

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions.PowerTransmissionActuator
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    ActuatorControl, eu.artemis.demanes.reconfiguration.Actuator
    +
    +
    +
    +
    public class PowerTransmissionActuator
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.Actuator, ActuatorControl
    +
    PowerTransmissionActuator
    +
    +
    Version:
    +
    1.0
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      java.util.VectorgetActions() +
      Get the list of actions provided by this actuator.
      +
      voidreset() +
      Reset the transmission power to the initial value.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PowerTransmissionActuator

        +
        public PowerTransmissionActuator(SystemContext context,
        +                                 com.sun.spot.core.util.Properties contextProperties)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getActions

        +
        public java.util.Vector getActions()
        +
        Get the list of actions provided by this actuator.
        +
        +
        Specified by:
        +
        getActions in interface eu.artemis.demanes.reconfiguration.Actuator
        +
        Returns:
        +
        A Vector containing the list of actions.
        +
        +
      • +
      + + + +
        +
      • +

        reset

        +
        public void reset()
        +
        Reset the transmission power to the initial value.
        +
        +
        Specified by:
        +
        reset in interface ActuatorControl
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/package-frame.html new file mode 100644 index 0000000..3eefc62 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/package-frame.html @@ -0,0 +1,20 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions

+
+

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/package-summary.html new file mode 100644 index 0000000..1b3fa75 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/package-summary.html @@ -0,0 +1,144 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions

+
+
+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/package-tree.html new file mode 100644 index 0000000..210ff9e --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/package-tree.html @@ -0,0 +1,137 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions.PowerTransmissionActuator (implements eu.artemis.demanes.reconfiguration.Actuator, eu.artemis.demanes.impl.SunSPOT.reconfiguration.ActuatorControl)
    • +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/BatteryLevelObservation.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/BatteryLevelObservation.html new file mode 100644 index 0000000..6e60813 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/BatteryLevelObservation.html @@ -0,0 +1,316 @@ + + + + + +BatteryLevelObservation (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+

Class BatteryLevelObservation

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.BatteryLevelObservation
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.Observation
    +
    +
    +
    +
    public class BatteryLevelObservation
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.Observation
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      BatteryLevelObservation(com.sun.spot.core.util.Properties properties, + java.lang.String urn) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      eu.artemis.demanes.datatypes.ANES_URNgetObservationID() +
      Gets the ID of an observation.
      +
      java.lang.ObjectgetValue() +
      Get the batteries remaining capacity in mAh.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        BatteryLevelObservation

        +
        public BatteryLevelObservation(com.sun.spot.core.util.Properties properties,
        +                               java.lang.String urn)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getObservationID

        +
        public eu.artemis.demanes.datatypes.ANES_URN getObservationID()
        +
        Gets the ID of an observation.
        +
        +
        Specified by:
        +
        getObservationID in interface eu.artemis.demanes.reconfiguration.Observation
        +
        Returns:
        +
        the ANES_URN of observation.
        +
        +
      • +
      + + + +
        +
      • +

        getValue

        +
        public java.lang.Object getValue()
        +                          throws eu.artemis.demanes.exceptions.ObservationInvocationException
        +
        Get the batteries remaining capacity in mAh.
        +
        +
        Specified by:
        +
        getValue in interface eu.artemis.demanes.reconfiguration.Observation
        +
        Returns:
        +
        the capacity in milliampere-hour.
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.ObservationInvocationException
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservation.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservation.html new file mode 100644 index 0000000..82d2489 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservation.html @@ -0,0 +1,411 @@ + + + + + +NodeDegreeObservation (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+

Class NodeDegreeObservation

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
    • +
    +
  • +
+
+ +
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      java.util.VectorgetNeighborList() 
      eu.artemis.demanes.datatypes.ANES_URNgetObservationID() +
      + Returns the unique identifier of this Observation.
      +
      java.lang.ObjectgetValue() +
      + Get the value of the observation
      +
      voidsetContext(SystemContext context) 
      voidstart() 
      voidupdateNodeDegree() 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        NodeDegreeObservation

        +
        public NodeDegreeObservation()
        +
      • +
      + + + +
        +
      • +

        NodeDegreeObservation

        +
        public NodeDegreeObservation(com.sun.spot.core.util.Properties properties,
        +                             java.lang.String urn)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setContext

        +
        public void setContext(SystemContext context)
        +
      • +
      + + + +
        +
      • +

        start

        +
        public void start()
        +
      • +
      + + + +
        +
      • +

        getObservationID

        +
        public eu.artemis.demanes.datatypes.ANES_URN getObservationID()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Observation
        +

        + Returns the unique identifier of this Observation. +

        + +

        + Every Observation is uniquely identifiable via a ANES_URN + identifier. By obtaining this identifier, the user should be able to know + what property the Observation will observe, an what (sub)component of the + system it is observing. +

        +
        +
        Specified by:
        +
        getObservationID in interface eu.artemis.demanes.reconfiguration.Observation
        +
        Returns:
        +
        An ANES_URN uniquely identifying the observation
        +
        +
      • +
      + + + +
        +
      • +

        getValue

        +
        public java.lang.Object getValue()
        +                          throws eu.artemis.demanes.exceptions.ObservationInvocationException
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Observation
        +

        + Get the value of the observation +

        + +

        + As a generic way to have Observations monitor the system, this method + must always be called in order to have the Observation get the + information from the system as it is intended to do. Any other functions + of the Action may exist but will get information from the system + component. +

        +
        +
        Specified by:
        +
        getValue in interface eu.artemis.demanes.reconfiguration.Observation
        +
        Returns:
        +
        an Object which represents the value of the observation. An + Observation may specify what type of Object is returned, but any + type of return value is possible.
        +
        Throws:
        +
        eu.artemis.demanes.exceptions.ObservationInvocationException - If at some point in obtaining the information from the system + an error occurs, an ObservationInvocationException is thrown + indicating that the observation failed.
        +
        +
      • +
      + + + +
        +
      • +

        updateNodeDegree

        +
        public void updateNodeDegree()
        +
      • +
      + + + + +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservationExtension.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservationExtension.html new file mode 100644 index 0000000..2e3ce0b --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservationExtension.html @@ -0,0 +1,229 @@ + + + + + +NodeDegreeObservationExtension (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+

Interface NodeDegreeObservationExtension

+
+
+
+
    +
  • +
    +
    All Known Implementing Classes:
    +
    NodeDegreeObservation
    +
    +
    +
    +
    public interface NodeDegreeObservationExtension
    +
    +
    Author:
    +
    humitsec
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getNeighborList

        +
        java.util.Vector getNeighborList()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationFactory.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationFactory.html new file mode 100644 index 0000000..891a97f --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationFactory.html @@ -0,0 +1,287 @@ + + + + + +ObservationFactory (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+

Class ObservationFactory

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationFactory
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ObservationFactory
    +extends java.lang.Object
    +
    +
    Version:
    +
    1.0.0
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      ObservationFactory() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static eu.artemis.demanes.reconfiguration.ObservationgetInstance(ObservationType observationType, + com.sun.spot.core.util.Properties properties, + java.lang.String urn) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ObservationFactory

        +
        public ObservationFactory()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getInstance

        +
        public static eu.artemis.demanes.reconfiguration.Observation getInstance(ObservationType observationType,
        +                                                                         com.sun.spot.core.util.Properties properties,
        +                                                                         java.lang.String urn)
        +                                                                  throws eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationFactoryException
        +
        +
        Throws:
        +
        eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationFactoryException
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationType.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationType.html new file mode 100644 index 0000000..998d28e --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationType.html @@ -0,0 +1,541 @@ + + + + + +ObservationType (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+

Class ObservationType

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class ObservationType
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        NODE_DEGREE_OBSERVATION_TEST_STRING

        +
        public static final java.lang.String NODE_DEGREE_OBSERVATION_TEST_STRING
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        BATTERY_LEVEL_OBSERVATION_TEST_STRING

        +
        public static final java.lang.String BATTERY_LEVEL_OBSERVATION_TEST_STRING
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        NODE_DEGREE_OBSERVATION_STRING

        +
        public static final java.lang.String NODE_DEGREE_OBSERVATION_STRING
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        BATTERY_LEVEL_OBSERVATION_STRING

        +
        public static final java.lang.String BATTERY_LEVEL_OBSERVATION_STRING
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        NODE_DEGREE_OBSERVATION_TEST_CODE

        +
        public static final int NODE_DEGREE_OBSERVATION_TEST_CODE
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        BATTERY_LEVEL_OBSERVATION_TEST_CODE

        +
        public static final int BATTERY_LEVEL_OBSERVATION_TEST_CODE
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        NODE_DEGREE_OBSERVATION_CODE

        +
        public static final int NODE_DEGREE_OBSERVATION_CODE
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        BATTERY_LEVEL_OBSERVATION_CODE

        +
        public static final int BATTERY_LEVEL_OBSERVATION_CODE
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        NODE_DEGREE_OBSERVATION_TEST

        +
        public static final ObservationType NODE_DEGREE_OBSERVATION_TEST
        +
      • +
      + + + +
        +
      • +

        BATTERY_LEVEL_OBSERVATION_TEST

        +
        public static final ObservationType BATTERY_LEVEL_OBSERVATION_TEST
        +
      • +
      + + + +
        +
      • +

        NODE_DEGREE_OBSERVATION

        +
        public static final ObservationType NODE_DEGREE_OBSERVATION
        +
      • +
      + + + +
        +
      • +

        BATTERY_LEVEL_OBSERVATION

        +
        public static final ObservationType BATTERY_LEVEL_OBSERVATION
        +
      • +
      + + + +
        +
      • +

        code

        +
        public int code
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ObservationType

        +
        protected ObservationType(java.lang.String name,
        +                          int code)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        equals

        +
        public boolean equals(java.lang.Object obj)
        +
        +
        Overrides:
        +
        equals in class java.lang.Object
        +
        +
      • +
      + + + +
        +
      • +

        hashCode

        +
        public int hashCode()
        +
        +
        Overrides:
        +
        hashCode in class java.lang.Object
        +
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/package-frame.html new file mode 100644 index 0000000..0aa13e4 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/package-frame.html @@ -0,0 +1,27 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations

+ + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/package-summary.html new file mode 100644 index 0000000..d11bc17 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/package-summary.html @@ -0,0 +1,169 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations

+
+
+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/package-tree.html new file mode 100644 index 0000000..29b684b --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/package-tree.html @@ -0,0 +1,144 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.BatteryLevelObservation (implements eu.artemis.demanes.reconfiguration.Observation)
    • +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation (implements eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservationExtension, eu.artemis.demanes.reconfiguration.Observation)
    • +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationFactory
    • +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
    • +
    +
  • +
+

Interface Hierarchy

+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-frame.html new file mode 100644 index 0000000..21edb5e --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-frame.html @@ -0,0 +1,32 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT.reconfiguration (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + +

eu.artemis.demanes.impl.SunSPOT.reconfiguration

+
+

Interfaces

+ +

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-frame.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-frame.html.mine new file mode 100644 index 0000000..acb2d8a --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-frame.html.mine @@ -0,0 +1,24 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.reconfiguration

+
+

Interfaces

+ +

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-frame.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-frame.html.r390 new file mode 100644 index 0000000..d9c7dac --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-frame.html.r390 @@ -0,0 +1,20 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + +

eu.artemis.demanes.impl.SunSPOT.reconfiguration

+ + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-frame.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-frame.html.r409 new file mode 100644 index 0000000..fa50e0c --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-frame.html.r409 @@ -0,0 +1,24 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.reconfiguration

+
+

Interfaces

+ +

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-summary.html new file mode 100644 index 0000000..4710096 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-summary.html @@ -0,0 +1,165 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT.reconfiguration (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.reconfiguration

+
+
+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-summary.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-summary.html.mine new file mode 100644 index 0000000..58743d8 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-summary.html.mine @@ -0,0 +1,157 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.reconfiguration

+
+
+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-summary.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-summary.html.r390 new file mode 100644 index 0000000..75a9068 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-summary.html.r390 @@ -0,0 +1,137 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.reconfiguration

+
+
+ +
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-summary.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-summary.html.r409 new file mode 100644 index 0000000..2adb8bf --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-summary.html.r409 @@ -0,0 +1,157 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.reconfiguration

+
+
+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-tree.html new file mode 100644 index 0000000..88a3996 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-tree.html @@ -0,0 +1,149 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT.reconfiguration Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.reconfiguration

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT (implements eu.artemis.demanes.reconfiguration.ActionProvider, eu.artemis.demanes.reconfiguration.ObservationProvider, eu.artemis.demanes.reconfiguration.ORAMediator)
    • +
    +
  • +
+

Interface Hierarchy

+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-tree.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-tree.html.mine new file mode 100644 index 0000000..3e8b761 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-tree.html.mine @@ -0,0 +1,141 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.reconfiguration

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT (implements eu.artemis.demanes.reconfiguration.ActionProvider, eu.artemis.demanes.reconfiguration.ObservationProvider, eu.artemis.demanes.reconfiguration.ORAMediator)
    • +
    +
  • +
+

Interface Hierarchy

+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-tree.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-tree.html.r390 new file mode 100644 index 0000000..41c9266 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-tree.html.r390 @@ -0,0 +1,129 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.reconfiguration

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT (implements eu.artemis.demanes.reconfiguration.ActionProvider, eu.artemis.demanes.reconfiguration.ObservationProvider, eu.artemis.demanes.reconfiguration.ORAMediator)
    • +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerTransmissionActuator (implements eu.artemis.demanes.reconfiguration.Actuator)
    • +
    +
  • +
+
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-tree.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-tree.html.r409 new file mode 100644 index 0000000..8de74d7 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/reconfiguration/package-tree.html.r409 @@ -0,0 +1,141 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.reconfiguration Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.reconfiguration

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT (implements eu.artemis.demanes.reconfiguration.ActionProvider, eu.artemis.demanes.reconfiguration.ObservationProvider, eu.artemis.demanes.reconfiguration.ORAMediator)
    • +
    +
  • +
+

Interface Hierarchy

+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/tests/TestController.html b/doc/eu/artemis/demanes/impl/SunSPOT/tests/TestController.html new file mode 100644 index 0000000..d4e7f9f --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/tests/TestController.html @@ -0,0 +1,230 @@ + + + + + +TestController (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.tests
+

Class TestController

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.tests.TestController
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class TestController
    +extends java.lang.Object
    +
    Author:
    +
    grys
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      TestController() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TestController

        +
        public TestController()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/tests/TestObserver.html b/doc/eu/artemis/demanes/impl/SunSPOT/tests/TestObserver.html new file mode 100644 index 0000000..1497722 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/tests/TestObserver.html @@ -0,0 +1,283 @@ + + + + + +TestObserver (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.tests
+

Class TestObserver

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.tests.TestObserver
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.Observer
    +
    +
    +
    +
    public class TestObserver
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.Observer
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      TestObserver() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      java.util.VectorgetObservations() +
      + In order for the user to obtain all Observationss which + provide information about the system component, this function returns an + array of observations which are available.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TestObserver

        +
        public TestObserver()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getObservations

        +
        public java.util.Vector getObservations()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Observer
        +

        + In order for the user to obtain all Observationss which + provide information about the system component, this function returns an + array of observations which are available. +

        + +

        + If there are no observations available this function returns null +

        +
        +
        Specified by:
        +
        getObservations in interface eu.artemis.demanes.reconfiguration.Observer
        +
        Returns:
        an Array or Observations that may be used to obtain information + about the system
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/tests/TestReasoner.html b/doc/eu/artemis/demanes/impl/SunSPOT/tests/TestReasoner.html new file mode 100644 index 0000000..71a7342 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/tests/TestReasoner.html @@ -0,0 +1,382 @@ + + + + + +TestReasoner (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.tests
+

Class TestReasoner

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.tests.TestReasoner
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.Reasoner, eu.artemis.demanes.reconfiguration.Triggerable
    +
    +
    +
    +
    public class TestReasoner
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.Reasoner
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      TestReasoner() 
      TestReasoner(com.sun.spot.core.util.Properties properties) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidsetActuationProvider(eu.artemis.demanes.reconfiguration.ActionProvider ap) +
      + Sets the object that will provide this Reasoner with it's actuators.
      +
      voidsetObservationProvider(eu.artemis.demanes.reconfiguration.ObservationProvider op) +
      + Sets the object that will provide this Reasoner with it's observations.
      +
      voidtrigger() +
      + The trigger function triggers the object to do it's main purpose.
      +
      voidtrigger(eu.artemis.demanes.datatypes.ANES_URN urn, + java.lang.Object value) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TestReasoner

        +
        public TestReasoner()
        +
      • +
      + + + +
        +
      • +

        TestReasoner

        +
        public TestReasoner(com.sun.spot.core.util.Properties properties)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setActuationProvider

        +
        public void setActuationProvider(eu.artemis.demanes.reconfiguration.ActionProvider ap)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Reasoner
        +

        + Sets the object that will provide this Reasoner with it's actuators. +

        + +

        + This function specifies that an ActionProvider should be + used as the object to get it's Actions from. The actions can + be obtained by the Reasoner using the ActionProvider's interface, and the + obtained actions can be subsequently used to change anything in the + system. +

        + +

        + If there was previously another object set as it's action provider, this + new object will overwrite it. There can only be one at a time. +

        +
        +
        Specified by:
        +
        setActuationProvider in interface eu.artemis.demanes.reconfiguration.Reasoner
        +
        Parameters:
        ap - The object to be used from now on in order to get actions from
        +
      • +
      + + + +
        +
      • +

        setObservationProvider

        +
        public void setObservationProvider(eu.artemis.demanes.reconfiguration.ObservationProvider op)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Reasoner
        +

        + Sets the object that will provide this Reasoner with it's observations. +

        + +

        + By specifying that an ObservationProvider should be used as + the object to get it's Observations from, means that all the + input of the Reasoner will have to come from this object. These + observations can then be obtained by the Reasoner via the appropriate + functions from the ObservationProvider interface. +

        + +

        + If there was already another observation provider set, this new object + will overwrite it. There can always only be one at a time. +

        +
        +
        Specified by:
        +
        setObservationProvider in interface eu.artemis.demanes.reconfiguration.Reasoner
        +
        Parameters:
        op - The object to be used from now on in order to get input from
        +
      • +
      + + + +
        +
      • +

        trigger

        +
        public void trigger()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.Triggerable
        +

        + The trigger function triggers the object to do it's main purpose. The + trigger function is merely a generic get an object started. It receives + no arguments, it can be seen merely as a button that activates the + Triggerable object. +

        +
        +
        Specified by:
        +
        trigger in interface eu.artemis.demanes.reconfiguration.Triggerable
        +
        +
      • +
      + + + +
        +
      • +

        trigger

        +
        public void trigger(eu.artemis.demanes.datatypes.ANES_URN urn,
        +           java.lang.Object value)
        +
        +
        Specified by:
        +
        trigger in interface eu.artemis.demanes.reconfiguration.Triggerable
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/tests/TestTriggerPolicy.html b/doc/eu/artemis/demanes/impl/SunSPOT/tests/TestTriggerPolicy.html new file mode 100644 index 0000000..c21f0ba --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/tests/TestTriggerPolicy.html @@ -0,0 +1,414 @@ + + + + + +TestTriggerPolicy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.tests
+

Class TestTriggerPolicy

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.tests.TestTriggerPolicy
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    eu.artemis.demanes.reconfiguration.TriggerPolicy
    +
    +
    +
    +
    public class TestTriggerPolicy
    +extends java.lang.Object
    +implements eu.artemis.demanes.reconfiguration.TriggerPolicy
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      TestTriggerPolicy() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidregisterTriggerable(eu.artemis.demanes.reconfiguration.Triggerable t) +
      + Add a Triggerable object to the collection of objects to + trigger whenever the policy intends to do so.
      +
      voidresume() +
      + Resumes the trigger policy activity if it is suspended.
      +
      voidstart() +
      + Runs the trigger policy.
      +
      voidstop() +
      + Stops the functioning of the trigger policy.
      +
      voidsuspend() +
      + Temporarily suspends the firing of the triggerable object.
      +
      voidunregisterTriggerable(eu.artemis.demanes.reconfiguration.Triggerable t) +
      + Remove a Triggerable object from the collection of objects + to trigger whenever the policy intends to do so.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TestTriggerPolicy

        +
        public TestTriggerPolicy()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        registerTriggerable

        +
        public void registerTriggerable(eu.artemis.demanes.reconfiguration.Triggerable t)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Add a Triggerable object to the collection of objects to + trigger whenever the policy intends to do so. If the object has already + been registered before, nothing changes. +

        +
        +
        Specified by:
        +
        registerTriggerable in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        Parameters:
        t - the object to trigger
        +
      • +
      + + + +
        +
      • +

        resume

        +
        public void resume()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Resumes the trigger policy activity if it is suspended. Calling this + function when the trigger policy is stopped, or started has no effect. + Resuming may cause immediate firing of the triggerable object. +

        +
        +
        Specified by:
        +
        resume in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        +
      • +
      + + + +
        +
      • +

        start

        +
        public void start()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Runs the trigger policy. After this call, the trigger policy will + determine the conditions and regularity in which the triggerable object + will be fired. Starting may cause the immediate firing of the triggerable + object. +

        + +

        + If start is invoked and the trigger policy is not in stopped state, it + will have no effect. +

        +
        +
        Specified by:
        +
        start in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        +
      • +
      + + + +
        +
      • +

        stop

        +
        public void stop()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Stops the functioning of the trigger policy. After this method is invoked + there will be no firing of the triggerable object which was registered. + Additionally the internal state of the Triggerpolicy (if any) is cleared. +

        +
        +
        Specified by:
        +
        stop in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        +
      • +
      + + + +
        +
      • +

        suspend

        +
        public void suspend()
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Temporarily suspends the firing of the triggerable object. The normal + functioning of the trigger policy must be resumed by using the resume() + method. +

        +
        +
        Specified by:
        +
        suspend in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        +
      • +
      + + + +
        +
      • +

        unregisterTriggerable

        +
        public void unregisterTriggerable(eu.artemis.demanes.reconfiguration.Triggerable t)
        +
        Description copied from interface: eu.artemis.demanes.reconfiguration.TriggerPolicy
        +

        + Remove a Triggerable object from the collection of objects + to trigger whenever the policy intends to do so. If the object was not + registered before, nothing changes +

        +
        +
        Specified by:
        +
        unregisterTriggerable in interface eu.artemis.demanes.reconfiguration.TriggerPolicy
        +
        Parameters:
        t - the object that no longer needs to be triggered
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/tests/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/tests/package-frame.html new file mode 100644 index 0000000..aa4be18 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/tests/package-frame.html @@ -0,0 +1,22 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.tests (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + +

eu.artemis.demanes.impl.SunSPOT.tests

+ + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/tests/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/tests/package-summary.html new file mode 100644 index 0000000..815081c --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/tests/package-summary.html @@ -0,0 +1,145 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.tests (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.tests

+
+
+ +
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/tests/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/tests/package-tree.html new file mode 100644 index 0000000..66bcbb0 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/tests/package-tree.html @@ -0,0 +1,131 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.tests Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.tests

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.tests.TestController
    • +
    • eu.artemis.demanes.impl.SunSPOT.tests.TestObserver (implements eu.artemis.demanes.reconfiguration.Observer)
    • +
    • eu.artemis.demanes.impl.SunSPOT.tests.TestReasoner (implements eu.artemis.demanes.reconfiguration.Reasoner)
    • +
    • eu.artemis.demanes.impl.SunSPOT.tests.TestTriggerPolicy (implements eu.artemis.demanes.reconfiguration.TriggerPolicy)
    • +
    +
  • +
+
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee.html new file mode 100644 index 0000000..90adff7 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee.html @@ -0,0 +1,580 @@ + + + + + +Marquee (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+

Class Marquee

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Marquee
    +extends java.lang.Object
    +
    Note: Although some parts should be considered to be accessed in a + synchronized way allowing different callers for the marquee, the actual usage + does not require it.
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        STATUS_IS_NOT_READY

        +
        public static final com.sun.spot.core.resources.transducers.LEDColor STATUS_IS_NOT_READY
        +
      • +
      + + + +
        +
      • +

        STATUS_IS_READY

        +
        public static final com.sun.spot.core.resources.transducers.LEDColor STATUS_IS_READY
        +
      • +
      + + + +
        +
      • +

        STATUS_IS_STANDBY

        +
        public static final com.sun.spot.core.resources.transducers.LEDColor STATUS_IS_STANDBY
        +
      • +
      + + + +
        +
      • +

        MINIMUM_INTERVAL

        +
        public static final long MINIMUM_INTERVAL
        +
        Minimum interval time in milliseconds for rotating the messages in the + marquee
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + + +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Marquee

        +
        public Marquee()
        +
      • +
      + + + + +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getUpdatingInterval

        +
        public long getUpdatingInterval()
        +
      • +
      + + + +
        +
      • +

        setUpdatingInterval

        +
        public void setUpdatingInterval(long updatingInterval)
        +
      • +
      + + + +
        +
      • +

        activateStatusIndicator

        +
        public void activateStatusIndicator()
        +
      • +
      + + + +
        +
      • +

        deactivateStatusIndicator

        +
        public void deactivateStatusIndicator()
        +
      • +
      + + + + + + + +
        +
      • +

        updateMessage

        +
        public void updateMessage(java.lang.Object key,
        +                          MarqueeMessage message)
        +
      • +
      + + + +
        +
      • +

        removeMessage

        +
        public void removeMessage(java.lang.Object key)
        +
      • +
      + + + +
        +
      • +

        clearMarquee

        +
        public void clearMarquee()
        +
      • +
      + + + +
        +
      • +

        start

        +
        public void start()
        +
      • +
      + + + +
        +
      • +

        pause

        +
        public void pause()
        +
      • +
      + + + +
        +
      • +

        unpause

        +
        public void unpause()
        +
      • +
      + + + +
        +
      • +

        stop

        +
        public void stop()
        +
      • +
      + + + +
        +
      • +

        setStatusIndicator

        +
        public void setStatusIndicator(com.sun.spot.core.resources.transducers.LEDColor status)
        +
      • +
      + + + +
        +
      • +

        blinkActivity1

        +
        public void blinkActivity1(com.sun.spot.core.resources.transducers.LEDColor activityColor)
        +
      • +
      + + + +
        +
      • +

        blinkActivity2

        +
        public void blinkActivity2(com.sun.spot.core.resources.transducers.LEDColor activityColor)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeAddMessageException.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeAddMessageException.html new file mode 100644 index 0000000..2092a5c --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeAddMessageException.html @@ -0,0 +1,276 @@ + + + + + +MarqueeAddMessageException (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+

Class MarqueeAddMessageException

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Throwable
    • +
    • +
        +
      • java.lang.Exception
      • +
      • +
          +
        • eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeAddMessageException
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class MarqueeAddMessageException
    +extends java.lang.Exception
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Throwable

        +addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        MarqueeAddMessageException

        +
        public MarqueeAddMessageException()
        +
      • +
      + + + +
        +
      • +

        MarqueeAddMessageException

        +
        public MarqueeAddMessageException(java.lang.String s)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeMessage.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeMessage.html new file mode 100644 index 0000000..d2c9293 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeMessage.html @@ -0,0 +1,355 @@ + + + + + +MarqueeMessage (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+

Class MarqueeMessage

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class MarqueeMessage
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static intMESSAGE_LENGTH 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      MarqueeMessage() 
      MarqueeMessage(com.sun.spot.core.resources.transducers.LEDColor[] message) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      com.sun.spot.core.resources.transducers.LEDColor[]getMessage() 
      voidsetMessage(com.sun.spot.core.resources.transducers.LEDColor[] message) 
      voidsetMessageAtPosition(int position, + com.sun.spot.core.resources.transducers.LEDColor color) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        MarqueeMessage

        +
        public MarqueeMessage()
        +
      • +
      + + + +
        +
      • +

        MarqueeMessage

        +
        public MarqueeMessage(com.sun.spot.core.resources.transducers.LEDColor[] message)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getMessage

        +
        public com.sun.spot.core.resources.transducers.LEDColor[] getMessage()
        +
      • +
      + + + +
        +
      • +

        setMessage

        +
        public void setMessage(com.sun.spot.core.resources.transducers.LEDColor[] message)
        +
      • +
      + + + +
        +
      • +

        setMessageAtPosition

        +
        public void setMessageAtPosition(int position,
        +                                 com.sun.spot.core.resources.transducers.LEDColor color)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/package-frame.html new file mode 100644 index 0000000..2e6b8c9 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/package-frame.html @@ -0,0 +1,25 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee

+
+

Classes

+ +

Exceptions

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/package-summary.html new file mode 100644 index 0000000..dadf7f5 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/package-summary.html @@ -0,0 +1,165 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee

+
+
+
    +
  • + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    Marquee +
    Note: Although some parts should be considered to be accessed in a + synchronized way allowing different callers for the marquee, the actual usage + does not require it.
    +
    MarqueeMessage 
    +
  • +
  • + + + + + + + + + + + + +
    Exception Summary 
    ExceptionDescription
    MarqueeAddMessageException 
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/package-tree.html new file mode 100644 index 0000000..c8e37d2 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/package-tree.html @@ -0,0 +1,147 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
    • +
    • eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
    • +
    • java.lang.Throwable (implements java.io.Serializable) + +
    • +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/Marquee.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/Marquee.html new file mode 100644 index 0000000..2b02024 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/Marquee.html @@ -0,0 +1,580 @@ + + + + + +Marquee (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.hal
+

Class Marquee

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.hal.Marquee
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Marquee
    +extends java.lang.Object
    +
    Note: Although some parts should be considered to be accessed in a + synchronized way allowing different callers for the marquee, the actual usage + does not require it.
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        STATUS_IS_NOT_READY

        +
        public static final com.sun.spot.core.resources.transducers.LEDColor STATUS_IS_NOT_READY
        +
      • +
      + + + +
        +
      • +

        STATUS_IS_READY

        +
        public static final com.sun.spot.core.resources.transducers.LEDColor STATUS_IS_READY
        +
      • +
      + + + +
        +
      • +

        STATUS_IS_STANDBY

        +
        public static final com.sun.spot.core.resources.transducers.LEDColor STATUS_IS_STANDBY
        +
      • +
      + + + +
        +
      • +

        MINIMUM_INTERVAL

        +
        public static final long MINIMUM_INTERVAL
        +
        Minimum interval time in milliseconds for rotating the messages in the + marquee
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + + +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Marquee

        +
        public Marquee()
        +
      • +
      + + + + +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getUpdatingInterval

        +
        public long getUpdatingInterval()
        +
      • +
      + + + +
        +
      • +

        setUpdatingInterval

        +
        public void setUpdatingInterval(long updatingInterval)
        +
      • +
      + + + +
        +
      • +

        activateStatusIndicator

        +
        public void activateStatusIndicator()
        +
      • +
      + + + +
        +
      • +

        deactivateStatusIndicator

        +
        public void deactivateStatusIndicator()
        +
      • +
      + + + + + + + +
        +
      • +

        updateMessage

        +
        public void updateMessage(java.lang.Object key,
        +                          MarqueeMessage message)
        +
      • +
      + + + +
        +
      • +

        removeMessage

        +
        public void removeMessage(java.lang.Object key)
        +
      • +
      + + + +
        +
      • +

        clearMarquee

        +
        public void clearMarquee()
        +
      • +
      + + + +
        +
      • +

        start

        +
        public void start()
        +
      • +
      + + + +
        +
      • +

        pause

        +
        public void pause()
        +
      • +
      + + + +
        +
      • +

        unpause

        +
        public void unpause()
        +
      • +
      + + + +
        +
      • +

        stop

        +
        public void stop()
        +
      • +
      + + + +
        +
      • +

        setStatusIndicator

        +
        public void setStatusIndicator(com.sun.spot.core.resources.transducers.LEDColor status)
        +
      • +
      + + + +
        +
      • +

        blinkActivity1

        +
        public void blinkActivity1(com.sun.spot.core.resources.transducers.LEDColor activityColor)
        +
      • +
      + + + +
        +
      • +

        blinkActivity2

        +
        public void blinkActivity2(com.sun.spot.core.resources.transducers.LEDColor activityColor)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/MarqueeAddMessageException.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/MarqueeAddMessageException.html new file mode 100644 index 0000000..62cd453 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/MarqueeAddMessageException.html @@ -0,0 +1,276 @@ + + + + + +MarqueeAddMessageException (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.hal
+

Class MarqueeAddMessageException

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Throwable
    • +
    • +
        +
      • java.lang.Exception
      • +
      • +
          +
        • eu.artemis.demanes.impl.SunSPOT.utils.hal.MarqueeAddMessageException
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class MarqueeAddMessageException
    +extends java.lang.Exception
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Throwable

        +addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        MarqueeAddMessageException

        +
        public MarqueeAddMessageException()
        +
      • +
      + + + +
        +
      • +

        MarqueeAddMessageException

        +
        public MarqueeAddMessageException(java.lang.String s)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/MarqueeMessage.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/MarqueeMessage.html new file mode 100644 index 0000000..a9235dd --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/MarqueeMessage.html @@ -0,0 +1,355 @@ + + + + + +MarqueeMessage (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.hal
+

Class MarqueeMessage

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.hal.MarqueeMessage
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class MarqueeMessage
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static intMESSAGE_LENGTH 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      MarqueeMessage() 
      MarqueeMessage(com.sun.spot.core.resources.transducers.LEDColor[] message) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      com.sun.spot.core.resources.transducers.LEDColor[]getMessage() 
      voidsetMessage(com.sun.spot.core.resources.transducers.LEDColor[] message) 
      voidsetMessageAtPosition(int position, + com.sun.spot.core.resources.transducers.LEDColor color) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        MarqueeMessage

        +
        public MarqueeMessage()
        +
      • +
      + + + +
        +
      • +

        MarqueeMessage

        +
        public MarqueeMessage(com.sun.spot.core.resources.transducers.LEDColor[] message)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getMessage

        +
        public com.sun.spot.core.resources.transducers.LEDColor[] getMessage()
        +
      • +
      + + + +
        +
      • +

        setMessage

        +
        public void setMessage(com.sun.spot.core.resources.transducers.LEDColor[] message)
        +
      • +
      + + + +
        +
      • +

        setMessageAtPosition

        +
        public void setMessageAtPosition(int position,
        +                                 com.sun.spot.core.resources.transducers.LEDColor color)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/Switch.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/Switch.html new file mode 100644 index 0000000..2cb6d16 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/Switch.html @@ -0,0 +1,535 @@ + + + + + +Switch (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.hal
+

Class Switch

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.hal.Switch
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    com.sun.spot.core.resources.IResource, com.sun.spot.core.resources.transducers.ISwitch, com.sun.spot.core.resources.transducers.ITransducer
    +
    +
    +
    +
    public class Switch
    +extends java.lang.Object
    +implements com.sun.spot.core.resources.transducers.ISwitch
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      Switch(int switchNumber) 
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Switch

        +
        public Switch(int switchNumber)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getInstance

        +
        public static com.sun.spot.core.resources.transducers.ISwitch getInstance(java.lang.String which)
        +
      • +
      + + + +
        +
      • +

        isOpen

        +
        public boolean isOpen()
        +
        +
        Specified by:
        +
        isOpen in interface com.sun.spot.core.resources.transducers.ISwitch
        +
        +
      • +
      + + + +
        +
      • +

        isClosed

        +
        public boolean isClosed()
        +
        +
        Specified by:
        +
        isClosed in interface com.sun.spot.core.resources.transducers.ISwitch
        +
        +
      • +
      + + + +
        +
      • +

        waitForChange

        +
        public void waitForChange()
        +
        +
        Specified by:
        +
        waitForChange in interface com.sun.spot.core.resources.transducers.ISwitch
        +
        +
      • +
      + + + +
        +
      • +

        addISwitchListener

        +
        public void addISwitchListener(com.sun.spot.core.resources.transducers.ISwitchListener who)
        +
        +
        Specified by:
        +
        addISwitchListener in interface com.sun.spot.core.resources.transducers.ISwitch
        +
        +
      • +
      + + + +
        +
      • +

        removeISwitchListener

        +
        public void removeISwitchListener(com.sun.spot.core.resources.transducers.ISwitchListener who)
        +
        +
        Specified by:
        +
        removeISwitchListener in interface com.sun.spot.core.resources.transducers.ISwitch
        +
        +
      • +
      + + + +
        +
      • +

        getISwitchListeners

        +
        public com.sun.spot.core.resources.transducers.ISwitchListener[] getISwitchListeners()
        +
        +
        Specified by:
        +
        getISwitchListeners in interface com.sun.spot.core.resources.transducers.ISwitch
        +
        +
      • +
      + + + +
        +
      • +

        getDescription

        +
        public java.lang.String getDescription()
        +
        +
        Specified by:
        +
        getDescription in interface com.sun.spot.core.resources.transducers.ITransducer
        +
        +
      • +
      + + + +
        +
      • +

        getMaxSamplingRate

        +
        public double getMaxSamplingRate()
        +
        +
        Specified by:
        +
        getMaxSamplingRate in interface com.sun.spot.core.resources.transducers.ITransducer
        +
        +
      • +
      + + + +
        +
      • +

        createSensorEvent

        +
        public com.sun.spot.core.resources.transducers.SensorEvent createSensorEvent()
        +
        +
        Specified by:
        +
        createSensorEvent in interface com.sun.spot.core.resources.transducers.ITransducer
        +
        +
      • +
      + + + +
        +
      • +

        saveEventState

        +
        public void saveEventState(com.sun.spot.core.resources.transducers.SensorEvent evt)
        +
        +
        Specified by:
        +
        saveEventState in interface com.sun.spot.core.resources.transducers.ITransducer
        +
        +
      • +
      + + + +
        +
      • +

        getTags

        +
        public java.lang.String[] getTags()
        +
        +
        Specified by:
        +
        getTags in interface com.sun.spot.core.resources.IResource
        +
        +
      • +
      + + + +
        +
      • +

        addTag

        +
        public void addTag(java.lang.String tag)
        +
        +
        Specified by:
        +
        addTag in interface com.sun.spot.core.resources.IResource
        +
        +
      • +
      + + + +
        +
      • +

        removeTag

        +
        public void removeTag(java.lang.String tag)
        +
        +
        Specified by:
        +
        removeTag in interface com.sun.spot.core.resources.IResource
        +
        +
      • +
      + + + +
        +
      • +

        hasTag

        +
        public boolean hasTag(java.lang.String tag)
        +
        +
        Specified by:
        +
        hasTag in interface com.sun.spot.core.resources.IResource
        +
        +
      • +
      + + + +
        +
      • +

        getTagValue

        +
        public java.lang.String getTagValue(java.lang.String key)
        +
        +
        Specified by:
        +
        getTagValue in interface com.sun.spot.core.resources.IResource
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/package-frame.html new file mode 100644 index 0000000..5fe2c43 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/package-frame.html @@ -0,0 +1,26 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.hal (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.utils.hal

+
+

Classes

+ +

Exceptions

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/package-summary.html new file mode 100644 index 0000000..8e6cab8 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/package-summary.html @@ -0,0 +1,169 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.hal (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.utils.hal

+
+
+
    +
  • + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    Marquee +
    Note: Although some parts should be considered to be accessed in a + synchronized way allowing different callers for the marquee, the actual usage + does not require it.
    +
    MarqueeMessage 
    Switch 
    +
  • +
  • + + + + + + + + + + + + +
    Exception Summary 
    ExceptionDescription
    MarqueeAddMessageException 
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/package-tree.html new file mode 100644 index 0000000..3557e6c --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/hal/package-tree.html @@ -0,0 +1,148 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.hal Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.utils.hal

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.hal.Marquee
    • +
    • eu.artemis.demanes.impl.SunSPOT.utils.hal.MarqueeMessage
    • +
    • eu.artemis.demanes.impl.SunSPOT.utils.hal.Switch (implements com.sun.spot.core.resources.transducers.ISwitch)
    • +
    • java.lang.Throwable (implements java.io.Serializable) + +
    • +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.html new file mode 100644 index 0000000..19be788 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.html @@ -0,0 +1,617 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +Level (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.logging
+

Class Level

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Level
    +extends java.lang.Object
    +
    The Level class defines a set of standard logging levels that can be used to + control logging output. The logging Level objects are ordered and are + specified by ordered integers. Enabling logging at a given level also enables + logging at all higher levels. + +

    + Clients should normally use the predefined Level constants such as + Level.SEVERE. +

    + +

    + The levels in descending order are: +

    + +
      +
    • SEVERE (highest value)
    • +
    • WARNING
    • +
    • INFO
    • +
    • CONFIG
    • +
    • FINE
    • +
    • FINER
    • +
    • FINEST (lowest value)
    • +
    + +

    + In addition there is a level OFF that can be used to turn off logging, and a + level ALL that can be used to enable logging of all messages. +

    + +

    + It is possible for third parties to define additional logging levels by + subclassing Level. In such cases subclasses should take care to chose unique + integer level values and to ensure that they maintain the Object uniqueness + property across serialization by defining a suitable readResolve method. +

    +
    +
    Version:
    +
    1.0.0
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static LevelALL +
      ALL indicates that all messages should be logged.
      +
      static LevelCONFIG +
      CONFIG is a message level for static configuration messages.
      +
      static LevelDEBUG +
      DEBUG is a message level for debugging information.
      +
      static LevelFINE +
      FINE is a message level providing tracing information.
      +
      static LevelFINER +
      FINER indicates a fairly detailed tracing message.
      +
      static LevelFINEST +
      FINEST indicates a highly detailed tracing message.
      +
      static LevelINFO +
      INFO is a message level for informational messages.
      +
      static LevelOFF +
      OFF is a special level that can be used to turn off logging.
      +
      static LevelSEVERE +
      SEVERE is a message level indicating a serious failure.
      +
      static LevelWARNING +
      WARNING is a message level indicating a potential problem.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + +
      Constructors 
      ModifierConstructor and Description
      protected Level(java.lang.String name, + int value) +
      Create a named Level with a given integer value.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      booleanequals(java.lang.Object ox) +
      Compare two objects for value equality.
      +
      java.lang.StringgetName() +
      Return the non-localized string name of the Level.
      +
      inthashCode() +
      Generate a hashcode.
      +
      intintValue() +
      Get the integer value for this level.
      +
      java.lang.StringtoString() +
      Returns a string representation of this Level.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        ALL

        +
        public static Level ALL
        +
        ALL indicates that all messages should be logged.
        +
      • +
      + + + +
        +
      • +

        FINEST

        +
        public static Level FINEST
        +
        FINEST indicates a highly detailed tracing message.
        +
      • +
      + + + +
        +
      • +

        FINER

        +
        public static Level FINER
        +
        FINER indicates a fairly detailed tracing message.
        +
      • +
      + + + +
        +
      • +

        FINE

        +
        public static Level FINE
        +
        FINE is a message level providing tracing information.
        +
      • +
      + + + +
        +
      • +

        DEBUG

        +
        public static Level DEBUG
        +
        DEBUG is a message level for debugging information.
        +
      • +
      + + + +
        +
      • +

        CONFIG

        +
        public static Level CONFIG
        +
        CONFIG is a message level for static configuration messages.
        +
      • +
      + + + +
        +
      • +

        INFO

        +
        public static Level INFO
        +
        INFO is a message level for informational messages.
        +
      • +
      + + + +
        +
      • +

        WARNING

        +
        public static Level WARNING
        +
        WARNING is a message level indicating a potential problem.
        +
      • +
      + + + +
        +
      • +

        SEVERE

        +
        public static Level SEVERE
        +
        SEVERE is a message level indicating a serious failure.
        +
      • +
      + + + +
        +
      • +

        OFF

        +
        public static Level OFF
        +
        OFF is a special level that can be used to turn off logging.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Level

        +
        protected Level(java.lang.String name,
        +                int value)
        +
        Create a named Level with a given integer value. + + Note that this constructor is "protected" to allow subclassing. In + general clients of logging should use one of the constant Level objects + such as SEVERE or FINEST. However, if clients need to add new logging + levels, they may subclass Level and define new constants.
        +
        +
        Parameters:
        +
        name - the name of the Level, for example "SEVERE".
        +
        value - an integer value for the level.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        hashCode

        +
        public int hashCode()
        +
        Generate a hashcode.
        +
        +
        Overrides:
        +
        hashCode in class java.lang.Object
        +
        Returns:
        +
        a hashcode based on the level value.
        +
        +
      • +
      + + + +
        +
      • +

        equals

        +
        public boolean equals(java.lang.Object ox)
        +
        Compare two objects for value equality.
        +
        +
        Overrides:
        +
        equals in class java.lang.Object
        +
        Parameters:
        +
        ox - the reference object with which to compare.
        +
        Returns:
        +
        true if and only if the two objects have the same level value.
        +
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public java.lang.String getName()
        +
        Return the non-localized string name of the Level.
        +
        +
        Returns:
        +
        non-localized name
        +
        +
      • +
      + + + +
        +
      • +

        intValue

        +
        public int intValue()
        +
        Get the integer value for this level. This integer value can be used for + efficient ordering comparisons between Level objects.
        +
        +
        Returns:
        +
        the integer value for this level.
        +
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Returns a string representation of this Level.
        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        +
        the non-localized name of the Level, for example "INFO".
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.html.mine new file mode 100644 index 0000000..8ef9361 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.html.mine @@ -0,0 +1,609 @@ + + + + + +Level (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.logging
+

Class Level

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Level
    +extends java.lang.Object
    +
    The Level class defines a set of standard logging levels that can be used to + control logging output. The logging Level objects are ordered and are + specified by ordered integers. Enabling logging at a given level also enables + logging at all higher levels. + +

    + Clients should normally use the predefined Level constants such as + Level.SEVERE. +

    + +

    + The levels in descending order are: +

    + +
      +
    • SEVERE (highest value)
    • +
    • WARNING
    • +
    • INFO
    • +
    • CONFIG
    • +
    • FINE
    • +
    • FINER
    • +
    • FINEST (lowest value)
    • +
    + +

    + In addition there is a level OFF that can be used to turn off logging, and a + level ALL that can be used to enable logging of all messages. +

    + +

    + It is possible for third parties to define additional logging levels by + subclassing Level. In such cases subclasses should take care to chose unique + integer level values and to ensure that they maintain the Object uniqueness + property across serialization by defining a suitable readResolve method. +

    +
    +
    Version:
    +
    1.0.0
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static LevelALL +
      ALL indicates that all messages should be logged.
      +
      static LevelCONFIG +
      CONFIG is a message level for static configuration messages.
      +
      static LevelDEBUG +
      DEBUG is a message level for debugging information.
      +
      static LevelFINE +
      FINE is a message level providing tracing information.
      +
      static LevelFINER +
      FINER indicates a fairly detailed tracing message.
      +
      static LevelFINEST +
      FINEST indicates a highly detailed tracing message.
      +
      static LevelINFO +
      INFO is a message level for informational messages.
      +
      static LevelOFF +
      OFF is a special level that can be used to turn off logging.
      +
      static LevelSEVERE +
      SEVERE is a message level indicating a serious failure.
      +
      static LevelWARNING +
      WARNING is a message level indicating a potential problem.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + +
      Constructors 
      ModifierConstructor and Description
      protected Level(java.lang.String name, + int value) +
      Create a named Level with a given integer value.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      booleanequals(java.lang.Object ox) +
      Compare two objects for value equality.
      +
      java.lang.StringgetName() +
      Return the non-localized string name of the Level.
      +
      inthashCode() +
      Generate a hashcode.
      +
      intintValue() +
      Get the integer value for this level.
      +
      java.lang.StringtoString() +
      Returns a string representation of this Level.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        ALL

        +
        public static Level ALL
        +
        ALL indicates that all messages should be logged.
        +
      • +
      + + + +
        +
      • +

        FINEST

        +
        public static Level FINEST
        +
        FINEST indicates a highly detailed tracing message.
        +
      • +
      + + + +
        +
      • +

        FINER

        +
        public static Level FINER
        +
        FINER indicates a fairly detailed tracing message.
        +
      • +
      + + + +
        +
      • +

        FINE

        +
        public static Level FINE
        +
        FINE is a message level providing tracing information.
        +
      • +
      + + + +
        +
      • +

        DEBUG

        +
        public static Level DEBUG
        +
        DEBUG is a message level for debugging information.
        +
      • +
      + + + +
        +
      • +

        CONFIG

        +
        public static Level CONFIG
        +
        CONFIG is a message level for static configuration messages.
        +
      • +
      + + + +
        +
      • +

        INFO

        +
        public static Level INFO
        +
        INFO is a message level for informational messages.
        +
      • +
      + + + +
        +
      • +

        WARNING

        +
        public static Level WARNING
        +
        WARNING is a message level indicating a potential problem.
        +
      • +
      + + + +
        +
      • +

        SEVERE

        +
        public static Level SEVERE
        +
        SEVERE is a message level indicating a serious failure.
        +
      • +
      + + + +
        +
      • +

        OFF

        +
        public static Level OFF
        +
        OFF is a special level that can be used to turn off logging.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Level

        +
        protected Level(java.lang.String name,
        +                int value)
        +
        Create a named Level with a given integer value. + + Note that this constructor is "protected" to allow subclassing. In + general clients of logging should use one of the constant Level objects + such as SEVERE or FINEST. However, if clients need to add new logging + levels, they may subclass Level and define new constants.
        +
        +
        Parameters:
        +
        name - the name of the Level, for example "SEVERE".
        +
        value - an integer value for the level.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        hashCode

        +
        public int hashCode()
        +
        Generate a hashcode.
        +
        +
        Overrides:
        +
        hashCode in class java.lang.Object
        +
        Returns:
        +
        a hashcode based on the level value.
        +
        +
      • +
      + + + +
        +
      • +

        equals

        +
        public boolean equals(java.lang.Object ox)
        +
        Compare two objects for value equality.
        +
        +
        Overrides:
        +
        equals in class java.lang.Object
        +
        Parameters:
        +
        ox - the reference object with which to compare.
        +
        Returns:
        +
        true if and only if the two objects have the same level value.
        +
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public java.lang.String getName()
        +
        Return the non-localized string name of the Level.
        +
        +
        Returns:
        +
        non-localized name
        +
        +
      • +
      + + + +
        +
      • +

        intValue

        +
        public int intValue()
        +
        Get the integer value for this level. This integer value can be used for + efficient ordering comparisons between Level objects.
        +
        +
        Returns:
        +
        the integer value for this level.
        +
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Returns a string representation of this Level.
        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        +
        the non-localized name of the Level, for example "INFO".
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.html.r390 new file mode 100644 index 0000000..cd3e5ee --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.html.r390 @@ -0,0 +1,553 @@ + + + + + +Level (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.logging
+

Class Level

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Level
    +extends java.lang.Object
    +
    The Level class defines a set of standard logging levels that can be + used to control logging output. The logging Level objects are ordered and + are specified by ordered integers. Enabling logging at a given level also + enables logging at all higher levels. + +

    + Clients should normally use the predefined Level constants such as Level.SEVERE. +

    + +

    + The levels in descending order are: +

    + +
      +
    • SEVERE (highest value)
    • +
    • WARNING
    • +
    • INFO
    • +
    • CONFIG
    • +
    • FINE
    • +
    • FINER
    • +
    • FINEST (lowest value)
    • +
    + +

    + In addition there is a level OFF that can be used to turn off logging, and a + level ALL that can be used to enable logging of all messages. +

    + +

    + It is possible for third parties to define additional logging levels by + subclassing Level. In such cases subclasses should take care to chose unique + integer level values and to ensure that they maintain the Object uniqueness + property across serialization by defining a suitable readResolve method. +

    +
    Version:
    +
    1.0.0
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static LevelALL +
      ALL indicates that all messages should be logged.
      +
      static LevelCONFIG +
      CONFIG is a message level for static configuration messages.
      +
      static LevelDEBUG +
      DEBUG is a message level for debugging information.
      +
      static LevelFINE +
      FINE is a message level providing tracing information.
      +
      static LevelFINER +
      FINER indicates a fairly detailed tracing message.
      +
      static LevelFINEST +
      FINEST indicates a highly detailed tracing message.
      +
      static LevelINFO +
      INFO is a message level for informational messages.
      +
      static LevelOFF +
      OFF is a special level that can be used to turn off logging.
      +
      static LevelSEVERE +
      SEVERE is a message level indicating a serious failure.
      +
      static LevelWARNING +
      WARNING is a message level indicating a potential problem.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + +
      Constructors 
      ModifierConstructor and Description
      protected Level(java.lang.String name, + int value) +
      Create a named Level with a given integer value.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      booleanequals(java.lang.Object ox) +
      Compare two objects for value equality.
      +
      java.lang.StringgetName() +
      Return the non-localized string name of the Level.
      +
      intintValue() +
      Get the integer value for this level.
      +
      java.lang.StringtoString() +
      Returns a string representation of this Level.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        ALL

        +
        public static Level ALL
        +
        ALL indicates that all messages should be logged.
        +
      • +
      + + + +
        +
      • +

        FINEST

        +
        public static Level FINEST
        +
        FINEST indicates a highly detailed tracing message.
        +
      • +
      + + + +
        +
      • +

        FINER

        +
        public static Level FINER
        +
        FINER indicates a fairly detailed tracing message.
        +
      • +
      + + + +
        +
      • +

        FINE

        +
        public static Level FINE
        +
        FINE is a message level providing tracing information.
        +
      • +
      + + + +
        +
      • +

        DEBUG

        +
        public static Level DEBUG
        +
        DEBUG is a message level for debugging information.
        +
      • +
      + + + +
        +
      • +

        CONFIG

        +
        public static Level CONFIG
        +
        CONFIG is a message level for static configuration messages.
        +
      • +
      + + + +
        +
      • +

        INFO

        +
        public static Level INFO
        +
        INFO is a message level for informational messages.
        +
      • +
      + + + +
        +
      • +

        WARNING

        +
        public static Level WARNING
        +
        WARNING is a message level indicating a potential problem.
        +
      • +
      + + + +
        +
      • +

        SEVERE

        +
        public static Level SEVERE
        +
        SEVERE is a message level indicating a serious failure.
        +
      • +
      + + + +
        +
      • +

        OFF

        +
        public static Level OFF
        +
        OFF is a special level that can be used to turn off logging.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Level

        +
        protected Level(java.lang.String name,
        +     int value)
        +
        Create a named Level with a given integer value. + + Note that this constructor is "protected" to allow subclassing. In + general clients of logging should use one of the constant Level objects + such as SEVERE or FINEST. However, if clients need to add new logging + levels, they may subclass Level and define new constants.
        +
        Parameters:
        name - the name of the Level, for example "SEVERE".
        value - an integer value for the level.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        equals

        +
        public boolean equals(java.lang.Object ox)
        +
        Compare two objects for value equality.
        +
        +
        Overrides:
        +
        equals in class java.lang.Object
        +
        Parameters:
        ox - the reference object with which to compare.
        +
        Returns:
        true if and only if the two objects have the same level value.
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public java.lang.String getName()
        +
        Return the non-localized string name of the Level.
        +
        Returns:
        non-localized name
        +
      • +
      + + + +
        +
      • +

        intValue

        +
        public int intValue()
        +
        Get the integer value for this level. This integer value can be used + for efficient ordering comparisons between Level objects.
        +
        Returns:
        the integer value for this level.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Returns a string representation of this Level.
        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        the non-localized name of the Level, for example "INFO".
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.html.r409 new file mode 100644 index 0000000..0d9b030 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.html.r409 @@ -0,0 +1,609 @@ + + + + + +Level (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.logging
+

Class Level

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Level
    +extends java.lang.Object
    +
    The Level class defines a set of standard logging levels that can be used to + control logging output. The logging Level objects are ordered and are + specified by ordered integers. Enabling logging at a given level also enables + logging at all higher levels. + +

    + Clients should normally use the predefined Level constants such as + Level.SEVERE. +

    + +

    + The levels in descending order are: +

    + +
      +
    • SEVERE (highest value)
    • +
    • WARNING
    • +
    • INFO
    • +
    • CONFIG
    • +
    • FINE
    • +
    • FINER
    • +
    • FINEST (lowest value)
    • +
    + +

    + In addition there is a level OFF that can be used to turn off logging, and a + level ALL that can be used to enable logging of all messages. +

    + +

    + It is possible for third parties to define additional logging levels by + subclassing Level. In such cases subclasses should take care to chose unique + integer level values and to ensure that they maintain the Object uniqueness + property across serialization by defining a suitable readResolve method. +

    +
    +
    Version:
    +
    1.0.0
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static LevelALL +
      ALL indicates that all messages should be logged.
      +
      static LevelCONFIG +
      CONFIG is a message level for static configuration messages.
      +
      static LevelDEBUG +
      DEBUG is a message level for debugging information.
      +
      static LevelFINE +
      FINE is a message level providing tracing information.
      +
      static LevelFINER +
      FINER indicates a fairly detailed tracing message.
      +
      static LevelFINEST +
      FINEST indicates a highly detailed tracing message.
      +
      static LevelINFO +
      INFO is a message level for informational messages.
      +
      static LevelOFF +
      OFF is a special level that can be used to turn off logging.
      +
      static LevelSEVERE +
      SEVERE is a message level indicating a serious failure.
      +
      static LevelWARNING +
      WARNING is a message level indicating a potential problem.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + +
      Constructors 
      ModifierConstructor and Description
      protected Level(java.lang.String name, + int value) +
      Create a named Level with a given integer value.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      booleanequals(java.lang.Object ox) +
      Compare two objects for value equality.
      +
      java.lang.StringgetName() +
      Return the non-localized string name of the Level.
      +
      inthashCode() +
      Generate a hashcode.
      +
      intintValue() +
      Get the integer value for this level.
      +
      java.lang.StringtoString() +
      Returns a string representation of this Level.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        ALL

        +
        public static Level ALL
        +
        ALL indicates that all messages should be logged.
        +
      • +
      + + + +
        +
      • +

        FINEST

        +
        public static Level FINEST
        +
        FINEST indicates a highly detailed tracing message.
        +
      • +
      + + + +
        +
      • +

        FINER

        +
        public static Level FINER
        +
        FINER indicates a fairly detailed tracing message.
        +
      • +
      + + + +
        +
      • +

        FINE

        +
        public static Level FINE
        +
        FINE is a message level providing tracing information.
        +
      • +
      + + + +
        +
      • +

        DEBUG

        +
        public static Level DEBUG
        +
        DEBUG is a message level for debugging information.
        +
      • +
      + + + +
        +
      • +

        CONFIG

        +
        public static Level CONFIG
        +
        CONFIG is a message level for static configuration messages.
        +
      • +
      + + + +
        +
      • +

        INFO

        +
        public static Level INFO
        +
        INFO is a message level for informational messages.
        +
      • +
      + + + +
        +
      • +

        WARNING

        +
        public static Level WARNING
        +
        WARNING is a message level indicating a potential problem.
        +
      • +
      + + + +
        +
      • +

        SEVERE

        +
        public static Level SEVERE
        +
        SEVERE is a message level indicating a serious failure.
        +
      • +
      + + + +
        +
      • +

        OFF

        +
        public static Level OFF
        +
        OFF is a special level that can be used to turn off logging.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Level

        +
        protected Level(java.lang.String name,
        +                int value)
        +
        Create a named Level with a given integer value. + + Note that this constructor is "protected" to allow subclassing. In + general clients of logging should use one of the constant Level objects + such as SEVERE or FINEST. However, if clients need to add new logging + levels, they may subclass Level and define new constants.
        +
        +
        Parameters:
        +
        name - the name of the Level, for example "SEVERE".
        +
        value - an integer value for the level.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        hashCode

        +
        public int hashCode()
        +
        Generate a hashcode.
        +
        +
        Overrides:
        +
        hashCode in class java.lang.Object
        +
        Returns:
        +
        a hashcode based on the level value.
        +
        +
      • +
      + + + +
        +
      • +

        equals

        +
        public boolean equals(java.lang.Object ox)
        +
        Compare two objects for value equality.
        +
        +
        Overrides:
        +
        equals in class java.lang.Object
        +
        Parameters:
        +
        ox - the reference object with which to compare.
        +
        Returns:
        +
        true if and only if the two objects have the same level value.
        +
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public java.lang.String getName()
        +
        Return the non-localized string name of the Level.
        +
        +
        Returns:
        +
        non-localized name
        +
        +
      • +
      + + + +
        +
      • +

        intValue

        +
        public int intValue()
        +
        Get the integer value for this level. This integer value can be used for + efficient ordering comparisons between Level objects.
        +
        +
        Returns:
        +
        the integer value for this level.
        +
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        Returns a string representation of this Level.
        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        Returns:
        +
        the non-localized name of the Level, for example "INFO".
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.html new file mode 100644 index 0000000..7c42271 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.html @@ -0,0 +1,707 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +Logger (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.logging
+

Class Logger

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Logger
    +extends java.lang.Object
    +
    +
    Version:
    +
    1.0.0
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static byteDISABLED 
      static byteRECORD +
      RECORD indicates that the log is going to be stored in an internal + RecordStore.
      +
      static byteREMOTE +
      REMOTE indicates that the log is going to be casted to a remote logging + facility.
      +
      static byteSYSTEM_ERROR +
      SYSTEM_ERROR indicates that the log is going to be done to System.err.
      +
      static byteSYSTEM_OUTPUT +
      SYSTEM_OUTPUT indicates that the log is going to be done to System.out.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      Logger() +
      Protected method to construct a logger with a default configuration.
      +
      Logger(byte destination) 
      Logger(java.lang.String name) 
      Logger(java.lang.String name, + byte destination) 
      Logger(java.lang.String name, + byte destination, + Level level) 
      Logger(SystemContext context) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidconfig(java.lang.String msg) 
      voiddebug(java.lang.String msg) 
      voidfine(java.lang.String msg) 
      voidfiner(java.lang.String msg) 
      voidfinest(java.lang.String msg) 
      bytegetDestination() 
      LevelgetLevel() 
      java.lang.StringgetName() 
      voidinfo(java.lang.String msg) 
      voidlog(Level level, + java.io.ByteArrayOutputStream baos) 
      voidlog(Level level, + java.lang.String msg) 
      voidsetAll() 
      voidsetDestination(byte destination) 
      voidsetLevel(Level level) 
      voidsetName(java.lang.String name) 
      voidsetOff() 
      voidsevere(java.lang.String msg) 
      voidwarning(java.lang.String msg) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        SYSTEM_OUTPUT

        +
        public static final byte SYSTEM_OUTPUT
        +
        SYSTEM_OUTPUT indicates that the log is going to be done to System.out.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        SYSTEM_ERROR

        +
        public static final byte SYSTEM_ERROR
        +
        SYSTEM_ERROR indicates that the log is going to be done to System.err.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        RECORD

        +
        public static final byte RECORD
        +
        RECORD indicates that the log is going to be stored in an internal + RecordStore.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + + + + + +
        +
      • +

        REMOTE

        +
        public static final byte REMOTE
        +
        REMOTE indicates that the log is going to be casted to a remote logging + facility.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Logger

        +
        public Logger()
        +
        Protected method to construct a logger with a default configuration. + + The logger will be initially configured for ALL messages done to + System.out.
        +
      • +
      + + + + + + + +
        +
      • +

        Logger

        +
        public Logger(java.lang.String name)
        +
      • +
      + + + +
        +
      • +

        Logger

        +
        public Logger(byte destination)
        +
      • +
      + + + +
        +
      • +

        Logger

        +
        public Logger(java.lang.String name,
        +              byte destination)
        +
      • +
      + + + +
        +
      • +

        Logger

        +
        public Logger(java.lang.String name,
        +              byte destination,
        +              Level level)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setName

        +
        public void setName(java.lang.String name)
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public java.lang.String getName()
        +
      • +
      + + + +
        +
      • +

        setDestination

        +
        public void setDestination(byte destination)
        +
      • +
      + + + +
        +
      • +

        getDestination

        +
        public byte getDestination()
        +
      • +
      + + + +
        +
      • +

        setLevel

        +
        public void setLevel(Level level)
        +
      • +
      + + + +
        +
      • +

        getLevel

        +
        public Level getLevel()
        +
      • +
      + + + +
        +
      • +

        setAll

        +
        public void setAll()
        +
      • +
      + + + +
        +
      • +

        setOff

        +
        public void setOff()
        +
      • +
      + + + +
        +
      • +

        finest

        +
        public void finest(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        finer

        +
        public void finer(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        fine

        +
        public void fine(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        debug

        +
        public void debug(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        config

        +
        public void config(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        info

        +
        public void info(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        warning

        +
        public void warning(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        severe

        +
        public void severe(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        log

        +
        public void log(Level level,
        +                java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        log

        +
        public void log(Level level,
        +                java.io.ByteArrayOutputStream baos)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.html.mine new file mode 100644 index 0000000..c3c0f96 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.html.mine @@ -0,0 +1,699 @@ + + + + + +Logger (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.logging
+

Class Logger

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Logger
    +extends java.lang.Object
    +
    +
    Version:
    +
    1.0.0
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static byteDISABLED 
      static byteRECORD +
      RECORD indicates that the log is going to be stored in an internal + RecordStore.
      +
      static byteREMOTE +
      REMOTE indicates that the log is going to be casted to a remote logging + facility.
      +
      static byteSYSTEM_ERROR +
      SYSTEM_ERROR indicates that the log is going to be done to System.err.
      +
      static byteSYSTEM_OUTPUT +
      SYSTEM_OUTPUT indicates that the log is going to be done to System.out.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      Logger() +
      Protected method to construct a logger with a default configuration.
      +
      Logger(byte destination) 
      Logger(java.lang.String name) 
      Logger(java.lang.String name, + byte destination) 
      Logger(java.lang.String name, + byte destination, + Level level) 
      Logger(SystemContext context) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidconfig(java.lang.String msg) 
      voiddebug(java.lang.String msg) 
      voidfine(java.lang.String msg) 
      voidfiner(java.lang.String msg) 
      voidfinest(java.lang.String msg) 
      bytegetDestination() 
      LevelgetLevel() 
      java.lang.StringgetName() 
      voidinfo(java.lang.String msg) 
      voidlog(Level level, + java.io.ByteArrayOutputStream baos) 
      voidlog(Level level, + java.lang.String msg) 
      voidsetAll() 
      voidsetDestination(byte destination) 
      voidsetLevel(Level level) 
      voidsetName(java.lang.String name) 
      voidsetOff() 
      voidsevere(java.lang.String msg) 
      voidwarning(java.lang.String msg) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        SYSTEM_OUTPUT

        +
        public static final byte SYSTEM_OUTPUT
        +
        SYSTEM_OUTPUT indicates that the log is going to be done to System.out.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        SYSTEM_ERROR

        +
        public static final byte SYSTEM_ERROR
        +
        SYSTEM_ERROR indicates that the log is going to be done to System.err.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        RECORD

        +
        public static final byte RECORD
        +
        RECORD indicates that the log is going to be stored in an internal + RecordStore.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + + + + + +
        +
      • +

        REMOTE

        +
        public static final byte REMOTE
        +
        REMOTE indicates that the log is going to be casted to a remote logging + facility.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Logger

        +
        public Logger()
        +
        Protected method to construct a logger with a default configuration. + + The logger will be initially configured for ALL messages done to + System.out.
        +
      • +
      + + + + + + + +
        +
      • +

        Logger

        +
        public Logger(java.lang.String name)
        +
      • +
      + + + +
        +
      • +

        Logger

        +
        public Logger(byte destination)
        +
      • +
      + + + +
        +
      • +

        Logger

        +
        public Logger(java.lang.String name,
        +              byte destination)
        +
      • +
      + + + +
        +
      • +

        Logger

        +
        public Logger(java.lang.String name,
        +              byte destination,
        +              Level level)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setName

        +
        public void setName(java.lang.String name)
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public java.lang.String getName()
        +
      • +
      + + + +
        +
      • +

        setDestination

        +
        public void setDestination(byte destination)
        +
      • +
      + + + +
        +
      • +

        getDestination

        +
        public byte getDestination()
        +
      • +
      + + + +
        +
      • +

        setLevel

        +
        public void setLevel(Level level)
        +
      • +
      + + + +
        +
      • +

        getLevel

        +
        public Level getLevel()
        +
      • +
      + + + +
        +
      • +

        setAll

        +
        public void setAll()
        +
      • +
      + + + +
        +
      • +

        setOff

        +
        public void setOff()
        +
      • +
      + + + +
        +
      • +

        finest

        +
        public void finest(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        finer

        +
        public void finer(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        fine

        +
        public void fine(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        debug

        +
        public void debug(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        config

        +
        public void config(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        info

        +
        public void info(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        warning

        +
        public void warning(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        severe

        +
        public void severe(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        log

        +
        public void log(Level level,
        +                java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        log

        +
        public void log(Level level,
        +                java.io.ByteArrayOutputStream baos)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.html.r390 new file mode 100644 index 0000000..84669e7 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.html.r390 @@ -0,0 +1,615 @@ + + + + + +Logger (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.logging
+

Class Logger

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Logger
    +extends java.lang.Object
    +
    Version:
    +
    1.0.0
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static byteRECORD +
      RECORD indicates that the log is going to be stored in an internal RecordStore.
      +
      static byteREMOTE +
      REMOTE indicates that the log is going to be casted to a remote logging facility.
      +
      static byteSYSTEM_ERROR +
      SYSTEM_ERROR indicates that the log is going to be done to System.err.
      +
      static byteSYSTEM_OUTPUT +
      SYSTEM_OUTPUT indicates that the log is going to be done to System.out.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      Logger() 
      Logger(byte destination) 
      Logger(java.lang.String name) 
      Logger(java.lang.String name, + byte destination) 
      Logger(java.lang.String name, + byte destination, + Level level) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidconfig(java.lang.String msg) 
      voiddebug(java.lang.String msg) 
      voidfine(java.lang.String msg) 
      voidfiner(java.lang.String msg) 
      voidfinest(java.lang.String msg) 
      bytegetDestination() 
      LevelgetLevel() 
      java.lang.StringgetName() 
      voidinfo(java.lang.String msg) 
      voidlog(Level level, + java.lang.String msg) 
      voidsetAll() 
      voidsetDestination(byte destination) 
      voidsetLevel(Level level) 
      voidsetName(java.lang.String name) 
      voidsetOff() 
      voidsevere(java.lang.String msg) 
      voidwarning(java.lang.String msg) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        SYSTEM_OUTPUT

        +
        public static final byte SYSTEM_OUTPUT
        +
        SYSTEM_OUTPUT indicates that the log is going to be done to System.out.
        +
        See Also:
        Constant Field Values
        +
      • +
      + + + +
        +
      • +

        SYSTEM_ERROR

        +
        public static final byte SYSTEM_ERROR
        +
        SYSTEM_ERROR indicates that the log is going to be done to System.err.
        +
        See Also:
        Constant Field Values
        +
      • +
      + + + +
        +
      • +

        RECORD

        +
        public static final byte RECORD
        +
        RECORD indicates that the log is going to be stored in an internal RecordStore.
        +
        See Also:
        Constant Field Values
        +
      • +
      + + + +
        +
      • +

        REMOTE

        +
        public static final byte REMOTE
        +
        REMOTE indicates that the log is going to be casted to a remote logging facility. NOT IMPLEMENTED AS OF VERSION 1.0.0.
        +
        See Also:
        Constant Field Values
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Logger

        +
        public Logger()
        +
      • +
      + + + +
        +
      • +

        Logger

        +
        public Logger(java.lang.String name)
        +
      • +
      + + + +
        +
      • +

        Logger

        +
        public Logger(byte destination)
        +
      • +
      + + + +
        +
      • +

        Logger

        +
        public Logger(java.lang.String name,
        +      byte destination)
        +
      • +
      + + + +
        +
      • +

        Logger

        +
        public Logger(java.lang.String name,
        +      byte destination,
        +      Level level)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setName

        +
        public void setName(java.lang.String name)
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public java.lang.String getName()
        +
      • +
      + + + +
        +
      • +

        setDestination

        +
        public void setDestination(byte destination)
        +
      • +
      + + + +
        +
      • +

        getDestination

        +
        public byte getDestination()
        +
      • +
      + + + +
        +
      • +

        setLevel

        +
        public void setLevel(Level level)
        +
      • +
      + + + +
        +
      • +

        getLevel

        +
        public Level getLevel()
        +
      • +
      + + + +
        +
      • +

        setAll

        +
        public void setAll()
        +
      • +
      + + + +
        +
      • +

        setOff

        +
        public void setOff()
        +
      • +
      + + + +
        +
      • +

        finest

        +
        public void finest(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        finer

        +
        public void finer(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        fine

        +
        public void fine(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        debug

        +
        public void debug(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        config

        +
        public void config(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        info

        +
        public void info(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        warning

        +
        public void warning(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        severe

        +
        public void severe(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        log

        +
        public void log(Level level,
        +       java.lang.String msg)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.html.r409 new file mode 100644 index 0000000..23d7bf2 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.html.r409 @@ -0,0 +1,699 @@ + + + + + +Logger (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.logging
+

Class Logger

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Logger
    +extends java.lang.Object
    +
    +
    Version:
    +
    1.0.0
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static byteDISABLED 
      static byteRECORD +
      RECORD indicates that the log is going to be stored in an internal + RecordStore.
      +
      static byteREMOTE +
      REMOTE indicates that the log is going to be casted to a remote logging + facility.
      +
      static byteSYSTEM_ERROR +
      SYSTEM_ERROR indicates that the log is going to be done to System.err.
      +
      static byteSYSTEM_OUTPUT +
      SYSTEM_OUTPUT indicates that the log is going to be done to System.out.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      Logger() +
      Protected method to construct a logger with a default configuration.
      +
      Logger(byte destination) 
      Logger(java.lang.String name) 
      Logger(java.lang.String name, + byte destination) 
      Logger(java.lang.String name, + byte destination, + Level level) 
      Logger(SystemContext context) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidconfig(java.lang.String msg) 
      voiddebug(java.lang.String msg) 
      voidfine(java.lang.String msg) 
      voidfiner(java.lang.String msg) 
      voidfinest(java.lang.String msg) 
      bytegetDestination() 
      LevelgetLevel() 
      java.lang.StringgetName() 
      voidinfo(java.lang.String msg) 
      voidlog(Level level, + java.io.ByteArrayOutputStream baos) 
      voidlog(Level level, + java.lang.String msg) 
      voidsetAll() 
      voidsetDestination(byte destination) 
      voidsetLevel(Level level) 
      voidsetName(java.lang.String name) 
      voidsetOff() 
      voidsevere(java.lang.String msg) 
      voidwarning(java.lang.String msg) 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        SYSTEM_OUTPUT

        +
        public static final byte SYSTEM_OUTPUT
        +
        SYSTEM_OUTPUT indicates that the log is going to be done to System.out.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        SYSTEM_ERROR

        +
        public static final byte SYSTEM_ERROR
        +
        SYSTEM_ERROR indicates that the log is going to be done to System.err.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        RECORD

        +
        public static final byte RECORD
        +
        RECORD indicates that the log is going to be stored in an internal + RecordStore.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + + + + + +
        +
      • +

        REMOTE

        +
        public static final byte REMOTE
        +
        REMOTE indicates that the log is going to be casted to a remote logging + facility.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Logger

        +
        public Logger()
        +
        Protected method to construct a logger with a default configuration. + + The logger will be initially configured for ALL messages done to + System.out.
        +
      • +
      + + + + + + + +
        +
      • +

        Logger

        +
        public Logger(java.lang.String name)
        +
      • +
      + + + +
        +
      • +

        Logger

        +
        public Logger(byte destination)
        +
      • +
      + + + +
        +
      • +

        Logger

        +
        public Logger(java.lang.String name,
        +              byte destination)
        +
      • +
      + + + +
        +
      • +

        Logger

        +
        public Logger(java.lang.String name,
        +              byte destination,
        +              Level level)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setName

        +
        public void setName(java.lang.String name)
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public java.lang.String getName()
        +
      • +
      + + + +
        +
      • +

        setDestination

        +
        public void setDestination(byte destination)
        +
      • +
      + + + +
        +
      • +

        getDestination

        +
        public byte getDestination()
        +
      • +
      + + + +
        +
      • +

        setLevel

        +
        public void setLevel(Level level)
        +
      • +
      + + + +
        +
      • +

        getLevel

        +
        public Level getLevel()
        +
      • +
      + + + +
        +
      • +

        setAll

        +
        public void setAll()
        +
      • +
      + + + +
        +
      • +

        setOff

        +
        public void setOff()
        +
      • +
      + + + +
        +
      • +

        finest

        +
        public void finest(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        finer

        +
        public void finer(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        fine

        +
        public void fine(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        debug

        +
        public void debug(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        config

        +
        public void config(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        info

        +
        public void info(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        warning

        +
        public void warning(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        severe

        +
        public void severe(java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        log

        +
        public void log(Level level,
        +                java.lang.String msg)
        +
      • +
      + + + +
        +
      • +

        log

        +
        public void log(Level level,
        +                java.io.ByteArrayOutputStream baos)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-frame.html new file mode 100644 index 0000000..d1ce086 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-frame.html @@ -0,0 +1,29 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT.utils.logging (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + +

eu.artemis.demanes.impl.SunSPOT.utils.logging

+
+

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-frame.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-frame.html.mine new file mode 100644 index 0000000..362cdb7 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-frame.html.mine @@ -0,0 +1,21 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.logging (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.utils.logging

+
+

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-frame.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-frame.html.r390 new file mode 100644 index 0000000..b687f9f --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-frame.html.r390 @@ -0,0 +1,20 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.logging (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + +

eu.artemis.demanes.impl.SunSPOT.utils.logging

+
+

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-frame.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-frame.html.r409 new file mode 100644 index 0000000..1c69b55 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-frame.html.r409 @@ -0,0 +1,21 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.logging (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.utils.logging

+
+

Classes

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-summary.html new file mode 100644 index 0000000..8a458b9 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-summary.html @@ -0,0 +1,157 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT.utils.logging (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.utils.logging

+
+
+
    +
  • + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    Level +
    The Level class defines a set of standard logging levels that can be used to + control logging output.
    +
    Logger 
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-summary.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-summary.html.mine new file mode 100644 index 0000000..f8debdb --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-summary.html.mine @@ -0,0 +1,149 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.logging (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.utils.logging

+
+
+
    +
  • + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    Level +
    The Level class defines a set of standard logging levels that can be used to + control logging output.
    +
    Logger 
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-summary.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-summary.html.r390 new file mode 100644 index 0000000..0966e55 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-summary.html.r390 @@ -0,0 +1,140 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.logging (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.utils.logging

+
+
+
    +
  • + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    Level +
    The Level class defines a set of standard logging levels that can be + used to control logging output.
    +
    Logger 
    +
  • +
+
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-summary.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-summary.html.r409 new file mode 100644 index 0000000..a4641aa --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-summary.html.r409 @@ -0,0 +1,149 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.logging (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.utils.logging

+
+
+
    +
  • + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    Level +
    The Level class defines a set of standard logging levels that can be used to + control logging output.
    +
    Logger 
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-tree.html new file mode 100644 index 0000000..e95f031 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-tree.html @@ -0,0 +1,146 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +eu.artemis.demanes.impl.SunSPOT.utils.logging Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.utils.logging

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
    • +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
    • +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-tree.html.mine b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-tree.html.mine new file mode 100644 index 0000000..83536dd --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-tree.html.mine @@ -0,0 +1,138 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.logging Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.utils.logging

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
    • +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
    • +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-tree.html.r390 b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-tree.html.r390 new file mode 100644 index 0000000..25c99aa --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-tree.html.r390 @@ -0,0 +1,129 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.logging Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.utils.logging

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
    • +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
    • +
    +
  • +
+
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-tree.html.r409 b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-tree.html.r409 new file mode 100644 index 0000000..bb1f2da --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/logging/package-tree.html.r409 @@ -0,0 +1,138 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.logging Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.utils.logging

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
    • +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
    • +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NDPFactory.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NDPFactory.html new file mode 100644 index 0000000..3ad7efe --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NDPFactory.html @@ -0,0 +1,290 @@ + + + + + +NDPFactory (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+

Class NDPFactory

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NDPFactory
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class NDPFactory
    +extends java.lang.Object
    +

    A NDPFactory is a factory method to provide a Neighbor Discovery Protocol + manager selected accordingly to the instance requested. See + NeighborDiscoveryType for further information regarding the current + available managers. + +

    +
    +
    Since:
    +
    23 Sep. 2014
    +
    Version:
    +
    1.0.0
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+ +
+
+ +
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryException.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryException.html new file mode 100644 index 0000000..a5dea86 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryException.html @@ -0,0 +1,264 @@ + + + + + +NeighborDiscoveryException (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+

Class NeighborDiscoveryException

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Throwable
    • +
    • +
        +
      • java.lang.Exception
      • +
      • +
          +
        • eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryException
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class NeighborDiscoveryException
    +extends java.lang.Exception
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Throwable

        +addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        NeighborDiscoveryException

        +
        public NeighborDiscoveryException(java.lang.String s)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryFactoryException.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryFactoryException.html new file mode 100644 index 0000000..f7793b3 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryFactoryException.html @@ -0,0 +1,264 @@ + + + + + +NeighborDiscoveryFactoryException (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+

Class NeighborDiscoveryFactoryException

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Throwable
    • +
    • +
        +
      • java.lang.Exception
      • +
      • +
          +
        • eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryFactoryException
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class NeighborDiscoveryFactoryException
    +extends java.lang.Exception
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Throwable

        +addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        NeighborDiscoveryFactoryException

        +
        public NeighborDiscoveryFactoryException(java.lang.String neighborDiscoveryType)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryProtocol.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryProtocol.html new file mode 100644 index 0000000..ae6c038 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryProtocol.html @@ -0,0 +1,268 @@ + + + + + +NeighborDiscoveryProtocol (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+

Interface NeighborDiscoveryProtocol

+
+
+
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getNodeDegree

        +
        long getNodeDegree()
        +
      • +
      + + + +
        +
      • +

        getNeighborList

        +
        java.util.Vector getNeighborList()
        +
      • +
      + + + +
        +
      • +

        doNeighborDiscovery

        +
        void doNeighborDiscovery()
        +
      • +
      + + + + +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryType.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryType.html new file mode 100644 index 0000000..da8495b --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryType.html @@ -0,0 +1,541 @@ + + + + + +NeighborDiscoveryType (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+

Class NeighborDiscoveryType

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class NeighborDiscoveryType
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        NODE_DEGREE_MANAGER_V1_STRING

        +
        public static final java.lang.String NODE_DEGREE_MANAGER_V1_STRING
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        NODE_DEGREE_MANAGER_V2_STRING

        +
        public static final java.lang.String NODE_DEGREE_MANAGER_V2_STRING
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        BASIC_NEIGHBOR_DISCOVERY_STRING

        +
        public static final java.lang.String BASIC_NEIGHBOR_DISCOVERY_STRING
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        ON_DEMAND_NODE_DEGREE_STRING

        +
        public static final java.lang.String ON_DEMAND_NODE_DEGREE_STRING
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        NODE_DEGREE_MANAGER_V1_CODE

        +
        public static final int NODE_DEGREE_MANAGER_V1_CODE
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        NODE_DEGREE_MANAGER_V2_CODE

        +
        public static final int NODE_DEGREE_MANAGER_V2_CODE
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        BASIC_NEIGHBOR_DISCOVERY_CODE

        +
        public static final int BASIC_NEIGHBOR_DISCOVERY_CODE
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        ON_DEMAND_NODE_DEGREE_CODE

        +
        public static final int ON_DEMAND_NODE_DEGREE_CODE
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + + + + + + + + + + + + + + + + + +
        +
      • +

        code

        +
        public int code
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        NeighborDiscoveryType

        +
        protected NeighborDiscoveryType(java.lang.String name,
        +                                int code)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        equals

        +
        public boolean equals(java.lang.Object obj)
        +
        +
        Overrides:
        +
        equals in class java.lang.Object
        +
        +
      • +
      + + + +
        +
      • +

        hashCode

        +
        public int hashCode()
        +
        +
        Overrides:
        +
        hashCode in class java.lang.Object
        +
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public java.lang.String toString()
        +
        +
        Overrides:
        +
        toString in class java.lang.Object
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1.html new file mode 100644 index 0000000..adaccb0 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1.html @@ -0,0 +1,341 @@ + + + + + +NodeDegreeManagerV1 (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+

Class NodeDegreeManagerV1

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
    • +
    +
  • +
+
+ +
+
+ +
+
+ +
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2.html new file mode 100644 index 0000000..2c18611 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2.html @@ -0,0 +1,341 @@ + + + + + +NodeDegreeManagerV2 (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+

Class NodeDegreeManagerV2

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
    • +
    +
  • +
+
+ +
+
+ +
+
+ +
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery.html new file mode 100644 index 0000000..a9cbe37 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery.html @@ -0,0 +1,474 @@ + + + + + +OnDemandNeighborDiscovery (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+

Class OnDemandNeighborDiscovery

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
    • +
    +
  • +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static longDEFAULT_HANDLER_INTERVAL +
      Default interval for the internal incoming message handler.
      +
      static intDEFAULT_PORT +
      Default port for neighbor discovery communications.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      OnDemandNeighborDiscovery() +
      The main constructor for this class provides the basic functionality of + the three-tier DEMANES/UPM Neighbor Discovery Protocol.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        DEFAULT_PORT

        +
        public static final int DEFAULT_PORT
        +
        Default port for neighbor discovery communications.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        DEFAULT_HANDLER_INTERVAL

        +
        public static final long DEFAULT_HANDLER_INTERVAL
        +
        Default interval for the internal incoming message handler.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        OnDemandNeighborDiscovery

        +
        public OnDemandNeighborDiscovery()
        +
        The main constructor for this class provides the basic functionality of + the three-tier DEMANES/UPM Neighbor Discovery Protocol.
        +
      • +
      +
    • +
    + + +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryCommunicationsListener.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryCommunicationsListener.html new file mode 100644 index 0000000..e9e75c7 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryCommunicationsListener.html @@ -0,0 +1,362 @@ + + + + + +OnDemandNeighborDiscoveryCommunicationsListener (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+

Class OnDemandNeighborDiscoveryCommunicationsListener

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.lang.Runnable
    +
    +
    +
    +
    public class OnDemandNeighborDiscoveryCommunicationsListener
    +extends java.lang.Object
    +implements java.lang.Runnable
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        OnDemandNeighborDiscoveryCommunicationsListener

        +
        public OnDemandNeighborDiscoveryCommunicationsListener(int port)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getPort

        +
        public int getPort()
        +
      • +
      + + + +
        +
      • +

        setPort

        +
        public void setPort(int port)
        +
      • +
      + + + +
        +
      • +

        isActive

        +
        public boolean isActive()
        +
      • +
      + + + +
        +
      • +

        setActive

        +
        public void setActive(boolean active)
        +
      • +
      + + + + + + + + + + + +
        +
      • +

        run

        +
        public void run()
        +
        +
        Specified by:
        +
        run in interface java.lang.Runnable
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryListener.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryListener.html new file mode 100644 index 0000000..4e26dab --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryListener.html @@ -0,0 +1,229 @@ + + + + + +OnDemandNeighborDiscoveryListener (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+

Interface OnDemandNeighborDiscoveryListener

+
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      All Methods Instance Methods Abstract Methods 
      Modifier and TypeMethod and Description
      voidnotify(com.sun.spot.multihop.io.j2me.radiogram.Radiogram incomingData) 
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        notify

        +
        void notify(com.sun.spot.multihop.io.j2me.radiogram.Radiogram incomingData)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryOriginal.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryOriginal.html new file mode 100644 index 0000000..df59d6b --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryOriginal.html @@ -0,0 +1,448 @@ + + + + + +OnDemandNeighborDiscoveryOriginal (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+

Class OnDemandNeighborDiscoveryOriginal

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
    • +
    +
  • +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static longDEFAULT_HANDLER_INTERVAL +
      Default interval for the internal incoming message handler.
      +
      static intDEFAULT_PORT +
      Default port for neighbor discovery communications.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      OnDemandNeighborDiscoveryOriginal() +
      The main constructor for this class provides the basic functionality of + the three-tier DEMANES/UPM Neighbor Discovery Protocol.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        DEFAULT_PORT

        +
        public static final int DEFAULT_PORT
        +
        Default port for neighbor discovery communications.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        DEFAULT_HANDLER_INTERVAL

        +
        public static final long DEFAULT_HANDLER_INTERVAL
        +
        Default interval for the internal incoming message handler.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        OnDemandNeighborDiscoveryOriginal

        +
        public OnDemandNeighborDiscoveryOriginal()
        +
        The main constructor for this class provides the basic functionality of + the three-tier DEMANES/UPM Neighbor Discovery Protocol.
        +
      • +
      +
    • +
    + + +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryRequester.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryRequester.html new file mode 100644 index 0000000..198ec2a --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryRequester.html @@ -0,0 +1,353 @@ + + + + + +OnDemandNeighborDiscoveryRequester (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+

Class OnDemandNeighborDiscoveryRequester

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.lang.Runnable
    +
    +
    +
    +
    public class OnDemandNeighborDiscoveryRequester
    +extends java.lang.Object
    +implements java.lang.Runnable
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      booleancheckRequestID(long requestID) 
      voiddoRequest() 
      booleanisActive() +
      Checks if the Neighbor Discovery Requester is alive.
      +
      voidrun() +
      Run method for being run as a thread.
      +
      voidsetActive(boolean active) +
      Sets the active status of the Neighbor Discovery Requester.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        OnDemandNeighborDiscoveryRequester

        +
        public OnDemandNeighborDiscoveryRequester(int port)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        isActive

        +
        public boolean isActive()
        +
        Checks if the Neighbor Discovery Requester is alive.
        +
        +
        Returns:
        +
        true if the Requester is alive. false otherwise.
        +
        +
      • +
      + + + +
        +
      • +

        setActive

        +
        public void setActive(boolean active)
        +
        Sets the active status of the Neighbor Discovery Requester.
        +
        +
        Parameters:
        +
        active -
        +
        +
      • +
      + + + +
        +
      • +

        run

        +
        public void run()
        +
        Run method for being run as a thread.
        +
        +
        Specified by:
        +
        run in interface java.lang.Runnable
        +
        +
      • +
      + + + +
        +
      • +

        checkRequestID

        +
        public boolean checkRequestID(long requestID)
        +
      • +
      + + + +
        +
      • +

        doRequest

        +
        public void doRequest()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborTableManager.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborTableManager.html new file mode 100644 index 0000000..3c08df5 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborTableManager.html @@ -0,0 +1,378 @@ + + + + + +OnDemandNeighborTableManager (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+

Class OnDemandNeighborTableManager

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class OnDemandNeighborTableManager
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        OnDemandNeighborTableManager

        +
        public OnDemandNeighborTableManager()
        +
      • +
      + + + +
        +
      • +

        OnDemandNeighborTableManager

        +
        public OnDemandNeighborTableManager(long expiryTime)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setExpiryTime

        +
        public void setExpiryTime(long expiryTime)
        +
      • +
      + + + +
        +
      • +

        getExpiryTime

        +
        public long getExpiryTime()
        +
      • +
      + + + +
        +
      • +

        getNeighborCount

        +
        public int getNeighborCount()
        +
      • +
      + + + +
        +
      • +

        getNeighborList

        +
        public java.util.Vector getNeighborList()
        +
      • +
      + + + +
        +
      • +

        addNeighbor

        +
        public void addNeighbor(java.lang.String neighborAddress)
        +
      • +
      + + + +
        +
      • +

        maintainNeighborTable

        +
        public void maintainNeighborTable()
        +
      • +
      + + + +
        +
      • +

        displayInformation

        +
        public void displayInformation()
        +
      • +
      + + + +
        +
      • +

        clearTable

        +
        public void clearTable()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/package-frame.html new file mode 100644 index 0000000..fe70839 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/package-frame.html @@ -0,0 +1,28 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand

+ + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/package-summary.html new file mode 100644 index 0000000..52cac9f --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/package-summary.html @@ -0,0 +1,173 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand

+
+
+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/package-tree.html new file mode 100644 index 0000000..02b7c0f --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/package-tree.html @@ -0,0 +1,145 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/package-frame.html new file mode 100644 index 0000000..5151496 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/package-frame.html @@ -0,0 +1,32 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery

+ + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/package-summary.html new file mode 100644 index 0000000..fc8db30 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/package-summary.html @@ -0,0 +1,191 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery

+
+
+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/package-tree.html new file mode 100644 index 0000000..bd47ffd --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/package-tree.html @@ -0,0 +1,154 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDU.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDU.html new file mode 100644 index 0000000..a5490a3 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDU.html @@ -0,0 +1,428 @@ + + + + + +NeighborDiscoveryPDU (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu
+

Class NeighborDiscoveryPDU

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class NeighborDiscoveryPDU
    +extends java.lang.Object
    +
    +
    Author:
    +
    Néstor Lucas Martínez
    +
    +
  • +
+
+
+ +
+
+ +
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDUException.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDUException.html new file mode 100644 index 0000000..44055c9 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDUException.html @@ -0,0 +1,266 @@ + + + + + +NeighborDiscoveryPDUException (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu
+

Class NeighborDiscoveryPDUException

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Throwable
    • +
    • +
        +
      • java.lang.Exception
      • +
      • +
          +
        • eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDUException
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class NeighborDiscoveryPDUException
    +extends java.lang.Exception
    +
    +
    Author:
    +
    Néstor Lucas Martínez <nestor.lucas@upm.es>
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      NeighborDiscoveryPDUException(java.lang.String method, + java.lang.String reason) 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Throwable

        +addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        NeighborDiscoveryPDUException

        +
        public NeighborDiscoveryPDUException(java.lang.String method,
        +                                     java.lang.String reason)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/package-frame.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/package-frame.html new file mode 100644 index 0000000..b4b1de6 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/package-frame.html @@ -0,0 +1,24 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu

+
+

Classes

+ +

Exceptions

+ +
+ + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/package-summary.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/package-summary.html new file mode 100644 index 0000000..56cab11 --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/package-summary.html @@ -0,0 +1,157 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu

+
+
+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/package-tree.html b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/package-tree.html new file mode 100644 index 0000000..ee8568a --- /dev/null +++ b/doc/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/package-tree.html @@ -0,0 +1,146 @@ + + + + + +eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Hierarchy For Package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
    • +
    • java.lang.Throwable (implements java.io.Serializable) + +
    • +
    +
  • +
+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/help-doc.html b/doc/help-doc.html new file mode 100644 index 0000000..247a7a0 --- /dev/null +++ b/doc/help-doc.html @@ -0,0 +1,233 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +API Help (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+
    +
  • +

    Overview

    +

    The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

    +
  • +
  • +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    +
      +
    • Interfaces (italic)
    • +
    • Classes
    • +
    • Enums
    • +
    • Exceptions
    • +
    • Errors
    • +
    • Annotation Types
    • +
    +
  • +
  • +

    Class/Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
      +
    • Class inheritance diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class/interface declaration
    • +
    • Class/interface description
    • +
    +
      +
    • Nested Class Summary
    • +
    • Field Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    +
      +
    • Field Detail
    • +
    • Constructor Detail
    • +
    • Method Detail
    • +
    +

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
  • +
  • +

    Annotation Type

    +

    Each annotation type has its own separate page with the following sections:

    +
      +
    • Annotation Type declaration
    • +
    • Annotation Type description
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    • Element Detail
    • +
    +
  • +
  • +

    Enum

    +

    Each enum has its own separate page with the following sections:

    +
      +
    • Enum declaration
    • +
    • Enum description
    • +
    • Enum Constant Summary
    • +
    • Enum Constant Detail
    • +
    +
  • +
  • +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • +
    +
  • +
  • +

    Deprecated API

    +

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    +
  • +
  • +

    Index

    +

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    +
  • +
  • +

    Prev/Next

    +

    These links take you to the next or previous class, interface, package, or related page.

    +
  • +
  • +

    Frames/No Frames

    +

    These links show and hide the HTML frames. All pages are available with or without frames.

    +
  • +
  • +

    All Classes

    +

    The All Classes link shows all classes and interfaces except non-static nested types.

    +
  • +
  • +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    +
  • +
  • +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
  • +
+This help file applies to API documentation generated using the standard doclet.
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/help-doc.html.mine b/doc/help-doc.html.mine new file mode 100644 index 0000000..e7a1607 --- /dev/null +++ b/doc/help-doc.html.mine @@ -0,0 +1,225 @@ + + + + + +API Help (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+
    +
  • +

    Overview

    +

    The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

    +
  • +
  • +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    +
      +
    • Interfaces (italic)
    • +
    • Classes
    • +
    • Enums
    • +
    • Exceptions
    • +
    • Errors
    • +
    • Annotation Types
    • +
    +
  • +
  • +

    Class/Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
      +
    • Class inheritance diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class/interface declaration
    • +
    • Class/interface description
    • +
    +
      +
    • Nested Class Summary
    • +
    • Field Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    +
      +
    • Field Detail
    • +
    • Constructor Detail
    • +
    • Method Detail
    • +
    +

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
  • +
  • +

    Annotation Type

    +

    Each annotation type has its own separate page with the following sections:

    +
      +
    • Annotation Type declaration
    • +
    • Annotation Type description
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    • Element Detail
    • +
    +
  • +
  • +

    Enum

    +

    Each enum has its own separate page with the following sections:

    +
      +
    • Enum declaration
    • +
    • Enum description
    • +
    • Enum Constant Summary
    • +
    • Enum Constant Detail
    • +
    +
  • +
  • +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • +
    +
  • +
  • +

    Deprecated API

    +

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    +
  • +
  • +

    Index

    +

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    +
  • +
  • +

    Prev/Next

    +

    These links take you to the next or previous class, interface, package, or related page.

    +
  • +
  • +

    Frames/No Frames

    +

    These links show and hide the HTML frames. All pages are available with or without frames.

    +
  • +
  • +

    All Classes

    +

    The All Classes link shows all classes and interfaces except non-static nested types.

    +
  • +
  • +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    +
  • +
  • +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
  • +
+This help file applies to API documentation generated using the standard doclet.
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/help-doc.html.r390 b/doc/help-doc.html.r390 new file mode 100644 index 0000000..01616ea --- /dev/null +++ b/doc/help-doc.html.r390 @@ -0,0 +1,216 @@ + + + + + +API Help (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+
    +
  • +

    Overview

    +

    The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

    +
  • +
  • +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    +
      +
    • Interfaces (italic)
    • +
    • Classes
    • +
    • Enums
    • +
    • Exceptions
    • +
    • Errors
    • +
    • Annotation Types
    • +
    +
  • +
  • +

    Class/Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
      +
    • Class inheritance diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class/interface declaration
    • +
    • Class/interface description
    • +
    +
      +
    • Nested Class Summary
    • +
    • Field Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    +
      +
    • Field Detail
    • +
    • Constructor Detail
    • +
    • Method Detail
    • +
    +

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
  • +
  • +

    Annotation Type

    +

    Each annotation type has its own separate page with the following sections:

    +
      +
    • Annotation Type declaration
    • +
    • Annotation Type description
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    • Element Detail
    • +
    +
  • +
  • +

    Enum

    +

    Each enum has its own separate page with the following sections:

    +
      +
    • Enum declaration
    • +
    • Enum description
    • +
    • Enum Constant Summary
    • +
    • Enum Constant Detail
    • +
    +
  • +
  • +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • +
    +
  • +
  • +

    Deprecated API

    +

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    +
  • +
  • +

    Index

    +

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    +
  • +
  • +

    Prev/Next

    +

    These links take you to the next or previous class, interface, package, or related page.

    +
  • +
  • +

    Frames/No Frames

    +

    These links show and hide the HTML frames. All pages are available with or without frames.

    +
  • +
  • +

    All Classes

    +

    The All Classes link shows all classes and interfaces except non-static nested types.

    +
  • +
  • +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    +
  • +
  • +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
  • +
+This help file applies to API documentation generated using the standard doclet.
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/help-doc.html.r409 b/doc/help-doc.html.r409 new file mode 100644 index 0000000..daea2ad --- /dev/null +++ b/doc/help-doc.html.r409 @@ -0,0 +1,225 @@ + + + + + +API Help (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+
    +
  • +

    Overview

    +

    The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

    +
  • +
  • +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    +
      +
    • Interfaces (italic)
    • +
    • Classes
    • +
    • Enums
    • +
    • Exceptions
    • +
    • Errors
    • +
    • Annotation Types
    • +
    +
  • +
  • +

    Class/Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
      +
    • Class inheritance diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class/interface declaration
    • +
    • Class/interface description
    • +
    +
      +
    • Nested Class Summary
    • +
    • Field Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    +
      +
    • Field Detail
    • +
    • Constructor Detail
    • +
    • Method Detail
    • +
    +

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
  • +
  • +

    Annotation Type

    +

    Each annotation type has its own separate page with the following sections:

    +
      +
    • Annotation Type declaration
    • +
    • Annotation Type description
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    • Element Detail
    • +
    +
  • +
  • +

    Enum

    +

    Each enum has its own separate page with the following sections:

    +
      +
    • Enum declaration
    • +
    • Enum description
    • +
    • Enum Constant Summary
    • +
    • Enum Constant Detail
    • +
    +
  • +
  • +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • +
    +
  • +
  • +

    Deprecated API

    +

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    +
  • +
  • +

    Index

    +

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    +
  • +
  • +

    Prev/Next

    +

    These links take you to the next or previous class, interface, package, or related page.

    +
  • +
  • +

    Frames/No Frames

    +

    These links show and hide the HTML frames. All pages are available with or without frames.

    +
  • +
  • +

    All Classes

    +

    The All Classes link shows all classes and interfaces except non-static nested types.

    +
  • +
  • +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    +
  • +
  • +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
  • +
+This help file applies to API documentation generated using the standard doclet.
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/index-all.html b/doc/index-all.html new file mode 100644 index 0000000..9905fd6 --- /dev/null +++ b/doc/index-all.html @@ -0,0 +1,2268 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +Index (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + + + +======= + + + +>>>>>>> .r409 + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
A B C D E F G H I K L M N O P R S T U V W  + + +

A

+
+<<<<<<< .mine +
activateStatusIndicator() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
ActuatorControl - Interface in eu.artemis.demanes.impl.SunSPOT.reconfiguration
+
 
+
addListener(CommunicationListener, int) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
addListener(OnDemandNeighborDiscoveryListener) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
 
+
addMessage(MarqueeMessage) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
addNeighbor(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
 
+
ALL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+======= +
activateStatusIndicator() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
ActuatorControl - Interface in eu.artemis.demanes.impl.SunSPOT.reconfiguration
+
 
+
addListener(CommunicationListener, int) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
addListener(OnDemandNeighborDiscoveryListener) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+>>>>>>> .r409 +
+
Adds a listener for parsing new neigbor discovery messages.
+
+
addMessage(MarqueeMessage) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
addNeighbor(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Adds a neighbor to the table.
+
+
ALL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
ALL indicates that all messages should be logged.
+
+
+ + + +

B

+
+
BASIC_NEIGHBOR_DISCOVERY - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
BASIC_NEIGHBOR_DISCOVERY_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
BASIC_NEIGHBOR_DISCOVERY_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
BATTERY_LEVEL_OBSERVATION - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BATTERY_LEVEL_OBSERVATION_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BATTERY_LEVEL_OBSERVATION_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BATTERY_LEVEL_OBSERVATION_TEST - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BATTERY_LEVEL_OBSERVATION_TEST_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BATTERY_LEVEL_OBSERVATION_TEST_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BatteryLevelObservation - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
BatteryLevelObservation(Properties, String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.BatteryLevelObservation
+
 
+
BL_EVENT - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.Events
+
 
+
BLINK_INTERVAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
blinkActivity1(LEDColor) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
blinkActivity2(LEDColor) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
BLObservationURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
BLObservationURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
BS_ADDRESS_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
Basestation address for Den Haag video.
+
+
BS_ADDRESSS_LONG - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
 
+
+ + + +

C

+
+
CallbackFunction(String, int, int, String, int, int) - Method in interface eu.artemis.demanes.impl.SunSPOT.communications.CommunicationListener
+
 
+<<<<<<< .mine +
checkRequestID(long) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
 
+
clearMarquee() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
clearTable() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
 
+
clone() - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
code - Variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
code - Variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
CommunicationListener - Interface in eu.artemis.demanes.impl.SunSPOT.communications
+
 
+
CommunicationManager - Class in eu.artemis.demanes.impl.SunSPOT.communications
+
 
+
CommunicationManager(SystemContext) - Constructor for class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
CONFIG - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+======= +
checkRequestID(long) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+>>>>>>> .r409 +
+
Checks the validity of a passed by request ID.
+
+
clearMarquee() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
clearTable() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Clears the neighbor table.
+
+
clone() - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
code - Variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
code - Variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
CommunicationListener - Interface in eu.artemis.demanes.impl.SunSPOT.communications
+
 
+
CommunicationManager - Class in eu.artemis.demanes.impl.SunSPOT.communications
+
 
+
CommunicationManager() - Constructor for class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
CONFIG - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
CONFIG is a message level for static configuration messages.
+
+
config(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
CONFIG_FILE - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_KEYNOTFOUND - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_KEYNUMBERS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_POINTS_COLUMN - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_POINTS_ROW_HEADER_NOTFOUND - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_POINTS_VALUE_NOTVALID - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_POINTS_VALUES_UNSORTED - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_VALUE_NOTVALID - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
containsKey(String) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
containsKey(String, Class) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
CR0_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.PTActionProperties
+
 
+
CR_MAX_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
CR_MIN_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
CREATED - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
+ + + +

D

+
+
deactivateStatusIndicator() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
DEBUG - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
DEBUG is a message level for debugging information.
+
+
debug(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+<<<<<<< .mine +
DEFAULT_HANDLER_INTERVAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Default interval for the internal incoming message handler.
+
+
DEFAULT_HANDLER_INTERVAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+
+
Default interval for the internal incoming message handler.
+
+
DEFAULT_PORT - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Default port for neighbor discovery communications.
+
+
DEFAULT_PORT - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+
+
Default port for neighbor discovery communications.
+
+
DefaultConfig - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
Class with the definition of basics keys for the configuration file + It also contains the description of the format for values
+
+
DefaultConfig() - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.DefaultConfig
+======= +
DEFAULT_HANDLER_INTERVAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Default interval for the internal incoming message handler.
+
+
DEFAULT_PORT - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Default port for neighbor discovery communications.
+
+
DefaultConfig - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
Class with the definition of basics keys for the configuration file + It also contains the description of the format for values
+
+
DefaultConfig() - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.DefaultConfig
+>>>>>>> .r409 +
 
+
defaultProp - Variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.DefaultConfig
+
 
+
DELIM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
DELTA_CR_KEY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
DELTA_CR_KEY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
DELTA_CR_MIN_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
DELTA_ND_MIN_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
DEMANESResources - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
DEMANESResources() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
denormVar() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
destroyApp(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
+
Called if the MIDlet is terminated by the system.
+
+<<<<<<< .mine +
DIED - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+======= +
DIED - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
DISABLED - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
doNeighborDiscovery() - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryProtocol
+
 
+
doNeighborDiscovery() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+
 
+
doNeighborDiscovery() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+
 
+
doNeighborDiscovery() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Performs a new neighbor discovery requests.
+
+
doRequest() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Performs a neighbor request.
+
+
du_CR_ID_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
DISABLED - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
displayInformation() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
 
+
doNeighborDiscovery() - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryProtocol
+
 
+
doNeighborDiscovery() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+
 
+
doNeighborDiscovery() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+
 
+
doNeighborDiscovery() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
 
+
doNeighborDiscovery() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+
 
+
doRequest() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
 
+
du_CR_ID_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
du_ND_ID_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+======= +
du_ND_ID_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+>>>>>>> .r409 +
+ + + +

E

+
+
E_CR_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
e_E_ID_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
e_ND_ID_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
equals(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
equals(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Compare two objects for value equality.
+
+
equals(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
ERRORMSG - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
Class for error messages description
+
+
ERRORMSG() - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
ErrorPrint(String) - Static method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
eu.artemis.demanes.impl.SunSPOT - package eu.artemis.demanes.impl.SunSPOT
+
 
+
eu.artemis.demanes.impl.SunSPOT.common - package eu.artemis.demanes.impl.SunSPOT.common
+
 
+
eu.artemis.demanes.impl.SunSPOT.communications - package eu.artemis.demanes.impl.SunSPOT.communications
+
 
+
eu.artemis.demanes.impl.SunSPOT.datatypes - package eu.artemis.demanes.impl.SunSPOT.datatypes
+
 
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner - package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration - package eu.artemis.demanes.impl.SunSPOT.reconfiguration
+
 
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions - package eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions
+
 
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations - package eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor - package eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor
+
 
+
eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee - package eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+
 
+
eu.artemis.demanes.impl.SunSPOT.utils.logging - package eu.artemis.demanes.impl.SunSPOT.utils.logging
+
 
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery - package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand - package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
 
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu - package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu
+
 
+
evaluate() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
evaluate() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
Events - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
Events() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.Events
+
 
+
+ + + +

F

+
+
FDM_PRIM_CONFIG_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
FDM_SEC_CONFIG_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
FINE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
FINE is a message level providing tracing information.
+
+
fine(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
FINER - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
FINER indicates a fairly detailed tracing message.
+
+
finer(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
FINEST - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
FINEST indicates a highly detailed tracing message.
+
+
finest(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
FIRST_LED - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The first LED index for the LEDs array.
+
+
FuzzyDM - Interface in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
FuzzyDM + + This is an interface to a decision making function
+
+
+ + + +

G

+
+<<<<<<< .mine +
generatePDU(byte, long) - Static method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+======= +
get(String) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
get(String) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+======= +
get(String, Class) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
get(String, Class) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+======= +
getActions() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions.PowerTransmissionActuator
+
+
Get the list of actions provided by this actuator.
+
+
getActions() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getActions() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions.PowerTransmissionActuator
+
+
Get the list of actions provided by this actuator.
+
+
getActions() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+======= +
getCommunicationManager() - Method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getCommunicationManager() - Method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+======= +
getDestination() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getDestination() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+======= +
getExpiryTime() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Gets the current expiry time.
+
+
getInputsID() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getExpiryTime() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+======= +
getInputsID() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getInputsID() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+======= +
getInputsSet() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getInputsID() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+======= +
getInputsSet() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getInputsSet() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+======= +
getInstance(String, Properties) - Static method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFactory
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getInputsSet() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+======= +
getInstance(ObservationType, Properties, String) - Static method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationFactory
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getInstance(String, Properties) - Static method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFactory
+======= +
getInstance(NeighborDiscoveryType) - Static method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NDPFactory
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getInstance(ObservationType, Properties, String) - Static method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationFactory
+======= +
getLastErrorMSG() - Static method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getInstance(NeighborDiscoveryType) - Static method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NDPFactory
+======= +
getLevel() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getLastErrorMSG() - Static method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
getLevel() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
getLogger() - Method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
getMarquee() - Method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
getMaximumPTX(int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
 
+
getMaximumPTXIndex(int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+======= +
getLogger() - Static method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
getMarquee() - Static method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
getMaximumPTX(int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
 
+
getMaximumPTXIndex(int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+>>>>>>> .r409 +
+
Static method to obtain the maximum index in the available transmission + powers array.
+
+
getMessage() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
getMinimumPTX(int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
 
+
getMinimumPTXIndex(int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the minimum index in the available transmission + powers array.
+
+
getName() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Return the non-localized string name of the Level.
+
+
getName() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+<<<<<<< .mine +
getNeighborCount() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+======= +
getNeighborCount() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Gets the number of acive neighbors registered in the table.
+
+
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+======= +
getNeighborList() - Method in interface eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservationExtension
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getNeighborList() - Method in interface eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservationExtension
+======= +
getNeighborList() - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryProtocol
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getNeighborList() - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryProtocol
+======= +
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+======= +
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+======= +
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Get the list if active neighbors.
+
+
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Retrives the list of active neighbors.
+
+
getNodeDegree() - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryProtocol
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+======= +
getNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+======= +
getNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+======= +
getNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Get the actual number of active neighbors (node degree).
+
+
getObservationID() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.BatteryLevelObservation
+
+
Gets the ID of an observation.
+
+
getObservationID() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getNodeDegree() - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryProtocol
+======= +
getObservations() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+======= +
getObservations() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+======= +
getOutput(String) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+======= +
getOutput(String) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+======= +
getOutputsID() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getObservationID() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.BatteryLevelObservation
+
+
Gets the ID of an observation.
+
+
getObservationID() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+======= +
getOutputsID() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getObservations() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+======= +
getOutputsSet() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getObservations() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+======= +
getOutputsSet() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getOutput(String) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+======= +
getPort() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
+
Gets the port used in this listener.
+
+
getProp() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.DefaultConfig
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getOutput(String) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+======= +
getPTACT() - Method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getOutputsID() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+======= +
getPTX() - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the actual transmission power.
+
+
getPTXatIndex(int, int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the transmission power given an index.
+
+
getPTXIndex(int, int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the index of a given power of transmission + related to the REAL available ones.
+
+
getRadioChannel() - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the actual radio channel in use.
+
+
getRequestID() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
+
Get the request ID of the instanced PDU
+
+
getState() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
getOutputsID() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getOutputsSet() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
getOutputsSet() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getPort() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
 
+
getProp() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.DefaultConfig
+
 
+
getPTACT() - Method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
getPTX() - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the actual transmission power.
+
+
getPTXatIndex(int, int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the transmission power given an index.
+
+
getPTXIndex(int, int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the index of a given power of transmission + related to the REAL available ones.
+
+
getRadioChannel() - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the actual radio channel in use.
+
+
getRequestID() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
getState() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
getType(String) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
getTypeOfPDU() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
getUpdatingInterval() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
getValue() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
getValue() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.BatteryLevelObservation
+
+
Get the batteries remaining capacity in mAh.
+
+
getValue() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
getValue(ANES_URN) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
getValueNorm() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+======= +
getType(String) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
getTypeOfPDU() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
+
Get the type of instanced PDU
+
+
getUpdatingInterval() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
getValue() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
getValue() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.BatteryLevelObservation
+
+
Get the batteries remaining capacity in mAh.
+
+
getValue() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
getValue(ANES_URN) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
getValueNorm() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+>>>>>>> .r409 +
+ + + +

H

+
+
hashCode() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
hashCode() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Generate a hashcode.
+
+
hashCode() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
+ + + +

I

+
+
IEEE_ADDRESS - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The SunSPOT property name for its IEEE address, "spot.address".
+
+
IEEE_ADDRESS_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The SunSPOT IEEE Address.
+
+
IMPORTANCE_NORMAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
INFO - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
INFO is a message level for informational messages.
+
+
info(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
init() - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
Interp1DFuzzyDM - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
Interp1DFuzzyDM(String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
Interp1DFuzzyDM(InputStream) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
Interp1DFuzzyDM(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
intValue() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Get the integer value for this level.
+
+
invoke(ANES_URN, ANES_BUNDLE) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+<<<<<<< .mine +
isActive() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
 
+
isActive() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Checks if the Neighbor Discovery Requester is alive.
+
+
isHandlerAlive() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+
 
+
isRunning() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
 
+======= +
isActive() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
+
Indicate whether this listener is active or not.
+
+
isActive() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Checks if the Neighbor Discovery Requester is alive.
+
+
isDebugActive() - Static method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
isRunning() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Indicate whether the neighbor discovery is running or not.
+
+
isUSBConnected() - Static method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+>>>>>>> .r409 +
+ + + +

K

+
+
KCR_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
KdeltaND_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
KE_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
KEY - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
Class for keys and constants definition
+
+
KEY() - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
KND_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
KSI_ND_PROPERTY_NAME - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
+ + + +

L

+
+
LAST_LED - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The last LED index for the LEDs array.
+
+
Level - Class in eu.artemis.demanes.impl.SunSPOT.utils.logging
+
+
The Level class defines a set of standard logging levels that can be used to + control logging output.
+
+
Level(String, int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Create a named Level with a given integer value.
+
+
load(InputStream) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
+
Load Inference System from a storage device
+
+
load(Properties) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
load(InputStream) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
load(Properties) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
log(Level, String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
log(Level, ByteArrayOutputStream) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
LOG_DESTINATION - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The log destination property name, "log.destination".
+
+
LOG_DESTINATION_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The default log destination (STDOUT) for the whole application.
+
+
LOG_LEVEL - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The log level property name, "log.level".
+
+
LOG_LEVEL_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The default log level (ALL) for the whole application.
+
+
Logger - Class in eu.artemis.demanes.impl.SunSPOT.utils.logging
+
 
+
Logger() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
Protected method to construct a logger with a default configuration.
+
+
Logger(SystemContext) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger(String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger(byte) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+<<<<<<< .mine +
Logger(String, byte) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger(String, byte, Level) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+======= +
Logger(String, byte) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger(String, byte, Level) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
logNeighborInformation() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Logs neighbor information.
+
+>>>>>>> .r409 +
+ + + +

M

+
+<<<<<<< .mine +
maintainNeighborTable() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+======= +
maintainNeighborTable() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Performs a maintenance check of the neighbor table, removing those + neighbors which their last alive update is greater than the expiry time.
+
+
Marquee - Class in eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+
+
Note: Although some parts should be considered to be accessed in a + synchronized way allowing different callers for the marquee, the actual usage + does not require it.
+
+
Marquee() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
Marquee - Class in eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+
+
Note: Although some parts should be considered to be accessed in a + synchronized way allowing different callers for the marquee, the actual usage + does not require it.
+
+
Marquee() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+======= +
Marquee(SystemContext) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
Marquee(SystemContext) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+======= +
MarqueeAddMessageException - Exception in eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
MarqueeAddMessageException - Exception in eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+======= +
MarqueeAddMessageException() - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeAddMessageException
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
MarqueeAddMessageException() - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeAddMessageException
+
 
+
MarqueeAddMessageException(String) - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeAddMessageException
+
 
+
MarqueeMessage - Class in eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+
 
+
MarqueeMessage() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
MarqueeMessage(LEDColor[]) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
MAXIMUM_POWER_TRANSMISSION - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
The maximum power of transmission in dBm.
+
+
MediatorProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
MediatorProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.MediatorProperties
+
 
+
MESSAGE_LENGTH - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
MINIMUM_INTERVAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
+
Minimum interval time in milliseconds for rotating the messages in the + marquee
+
+
MINIMUM_POWER_TRANSMISSION - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
The minimum power of transmission in dBm.
+
+
MODE_ANYCAST - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
MODE_BROADCAST - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
MODE_MULTICAST - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
MODE_UNICAST - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+======= +
MarqueeAddMessageException(String) - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeAddMessageException
+
 
+
MarqueeMessage - Class in eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+
 
+
MarqueeMessage() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
MarqueeMessage(LEDColor[]) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
MAXIMUM_POWER_TRANSMISSION - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
The maximum power of transmission in dBm.
+
+
MediatorProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
MediatorProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.MediatorProperties
+
 
+
MESSAGE_LENGTH - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
MINIMUM_INTERVAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
+
Minimum interval time in milliseconds for rotating the messages in the + marquee
+
+
MINIMUM_POWER_TRANSMISSION - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
The minimum power of transmission in dBm.
+
+
MODE_ANYCAST - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
MODE_BROADCAST - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
MODE_MULTICAST - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
MODE_UNICAST - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+>>>>>>> .r409 +
+ + + +

N

+
+
ND_EVENT - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.Events
+
 
+
ND_MIN_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
ND_R_PROPERTY_NAME - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
NDinitPROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
NDObservationURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
NDObservationURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
NDPDU_REQUEST - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
NDPDU_RESPONSE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
NDPDU_RESPONSE_ACK - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
NDPFactory - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
+
A NDPFactory is a factory method to provide a Neighbor Discovery Protocol + manager selected accordingly to the instance requested.
+
+
NDPFactory() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NDPFactory
+
 
+
NDRefPROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
NeighborDiscoveryException - Exception in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NeighborDiscoveryException(String) - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryException
+
 
+
NeighborDiscoveryFactoryException - Exception in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+<<<<<<< .mine +
NeighborDiscoveryFactoryException(String) - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryFactoryException
+
 
+
NeighborDiscoveryPDU - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu
+
 
+
NeighborDiscoveryPDU(byte, long) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
NeighborDiscoveryPDUException - Exception in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu
+
 
+
NeighborDiscoveryPDUException(String, String) - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDUException
+
 
+
NeighborDiscoveryProtocol - Interface in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NeighborDiscoveryType - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NeighborDiscoveryType(String, int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V1 - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V1_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V1_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V2 - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V2_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V2_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_OBSERVATION - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_TEST - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_TEST_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_TEST_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NodeDegreeManagerV1 - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NodeDegreeManagerV1() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+
 
+
NodeDegreeManagerV2 - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NodeDegreeManagerV2() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+
 
+
NodeDegreeObservation - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
NodeDegreeObservation() - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
NodeDegreeObservation(Properties, String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
NodeDegreeObservationExtension - Interface in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
normVar() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
notify(Radiogram) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
 
+
notify(Radiogram) - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryListener
+
 
+
notify(Radiogram) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+
 
+
notifyForward(long, long, long, long) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
NUMBER_OF_INPUTS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
NUMBER_OF_OUTPUTS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
NUMBER_OF_POINTS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+======= +
NeighborDiscoveryFactoryException(String) - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryFactoryException
+
 
+
NeighborDiscoveryPDU - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu
+
+
Neighbor Discovery PDU is a representation of a PDU for the Neighbor Discovery + Protocol.
+
+
NeighborDiscoveryPDU(byte, long) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
+
Public constructor.
+
+
NeighborDiscoveryPDUException - Exception in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu
+
+
An NeighborDiscoveryPDUException is thrown to indicate that an error occurred + during the generation or parsing of a NeighborDiscoveryPDU.
+
+
NeighborDiscoveryPDUException(String, String) - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDUException
+
 
+
NeighborDiscoveryProtocol - Interface in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NeighborDiscoveryType - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NeighborDiscoveryType(String, int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V1 - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V1_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V1_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V2 - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V2_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V2_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_OBSERVATION - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_TEST - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_TEST_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_TEST_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NodeDegreeManagerV1 - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NodeDegreeManagerV1() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+
 
+
NodeDegreeManagerV2 - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NodeDegreeManagerV2() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+
 
+
NodeDegreeObservation - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
NodeDegreeObservation() - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
NodeDegreeObservation(Properties, String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
NodeDegreeObservationExtension - Interface in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
normVar() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
notify(Radiogram) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Notifies the parsing method that a new neighbor discovery message has + been received.
+
+
notify(Radiogram) - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryListener
+
 
+
notifyForward(long, long, long, long) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
NUMBER_OF_INPUTS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
NUMBER_OF_OUTPUTS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
NUMBER_OF_POINTS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+>>>>>>> .r409 +
+ + + +

O

+
+
ObservationFactory - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
ObservationFactory() - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationFactory
+
 
+
ObservationType - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
ObservationType(String, int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
OFF - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
OFF is a special level that can be used to turn off logging.
+
+
ON_DEMAND_NODE_DEGREE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
ON_DEMAND_NODE_DEGREE_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
ON_DEMAND_NODE_DEGREE_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+<<<<<<< .mine +
OnDemandNeighborDiscovery - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+======= +
OnDemandNeighborDiscovery - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
+
OnDemandNeighborDiscovery implements a basic three-tiered protocol for doing + an on demand neighbor discovery.
+
+
OnDemandNeighborDiscovery() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
The main constructor for this class provides the basic functionality of + the three-tiered DEMANES/UPM Neighbor Discovery Protocol.
+
+
OnDemandNeighborDiscoveryCommunicationsListener - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
+
OnDemandNeighborDiscoveryCommunicationsListener executes a thread for + listening neighbor discovery requests from other neighbors.
+
+
OnDemandNeighborDiscoveryCommunicationsListener(int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
+
Creates a new OnDemandNeighborDiscoveryCommunicationsListener on port + port
+
+
OnDemandNeighborDiscoveryListener - Interface in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
+
OnDemandNeighborDiscoveryListener defines the interface used by the + listener of neighbor discovery requests issued by other motes.
+
+
OnDemandNeighborDiscoveryRequester - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
+
OnDemandNeighborDiscoveryRequester is used to manage the issue of a + neighbor discovery request.
+
+
OnDemandNeighborDiscoveryRequester(int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Creates a new Neighbor Discovery Requester on port port.
+
+
OnDemandNeighborTableManager - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
+
OnDemandNeighborTableMAnager implements the table used to store the active + neighbors detected by the Neighbor Discovery Protocol.
+
+
OnDemandNeighborTableManager() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Creates a new instance of the neighbor table manager using the default + expiry time for new entries.
+
+
OnDemandNeighborTableManager(long) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Creates a new instance of the neighbor table manager using the expiry + time especified by expiryTime.
+
+
ORAMediatorForSunSPOT - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
OnDemandNeighborDiscovery() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
The main constructor for this class provides the basic functionality of + the three-tier DEMANES/UPM Neighbor Discovery Protocol.
+
+
OnDemandNeighborDiscoveryCommunicationsListener - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
 
+
OnDemandNeighborDiscoveryCommunicationsListener(int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
 
+
OnDemandNeighborDiscoveryListener - Interface in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
 
+
OnDemandNeighborDiscoveryOriginal - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
 
+
OnDemandNeighborDiscoveryOriginal() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+
+
The main constructor for this class provides the basic functionality of + the three-tier DEMANES/UPM Neighbor Discovery Protocol.
+
+
OnDemandNeighborDiscoveryRequester - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
 
+
OnDemandNeighborDiscoveryRequester(int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
 
+
OnDemandNeighborTableManager - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
 
+
OnDemandNeighborTableManager() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
 
+
OnDemandNeighborTableManager(long) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
 
+
ORAMediatorForSunSPOT - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration
+
 
+
ORAMediatorForSunSPOT() - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
ORAMediatorForSunSPOT(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+======= +
ORAMediatorForSunSPOT() - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
ORAMediatorForSunSPOT(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+>>>>>>> .r409 +
+ + + +

P

+
+<<<<<<< .mine +
parsePDU(byte[]) - Static method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+======= +
parsePDU(byte[]) - Static method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
+
Parse a byte array containing a Neighbor Discovery PDU.
+
+
pause() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
pause() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+======= +
pauseApp() - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
pauseApp() - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+======= +
POINTS_ARRAY - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
POINTS_ARRAY - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+======= +
POINTS_ROW_DELIM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
POINTS_ROW_DELIM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
PowerScalingController - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+======= +
PowerScalingController - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+>>>>>>> .r409 +
+
This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
+
+
PowerScalingController(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
PowerScalingControllerFactory - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
PowerScalingControllerFactory() - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFactory
+
 
+
PowerScalingControllerFuzzyLogic - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
PowerScalingControllerFuzzyLogic(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+
 
+
PowerScalingControllerInterp1FDM - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
+
+
PowerScalingControllerInterp1FDM(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+
 
+
PowerScalingMonitor - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor
+
 
+
PowerScalingMonitor(SystemContext, Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
PowerTransmissionActuator - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions
+
+
PowerTransmissionActuator
+
+
PowerTransmissionActuator(SystemContext, Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions.PowerTransmissionActuator
+
 
+
PRIORITY_NORMAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
PTActionProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
PTActionProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.PTActionProperties
+
 
+
PTActionURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
PTActionURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
put(String, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
put(String, String) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
+ + + +

R

+
+
RADIO_PROPERTIES_ERROR - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
ERROR CONSTANT.
+
+
RadioProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
RadioProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
 
+
ReasonerProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
ReasonerProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
REASONING_FUNCTION - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
ReconfigurationResources - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
ReconfigurationResources() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
RECORD - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
RECORD indicates that the log is going to be stored in an internal + RecordStore.
+
+
registerActuator(Actuator) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
registerObserver(Observer) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
registerTriggerable(Triggerable) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
REMOTE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
REMOTE indicates that the log is going to be casted to a remote logging + facility.
+
+
removeListener(CommunicationListener) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+<<<<<<< .mine +
removeListener(OnDemandNeighborDiscoveryListener) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
 
+
removeMessage(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
RERRReceived(long, long) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RERRSent(long, long) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
reset() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions.PowerTransmissionActuator
+======= +
removeListener(OnDemandNeighborDiscoveryListener) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+>>>>>>> .r409 +
+<<<<<<< .mine +
Reset the transmission power to the initial value.
+======= +
Removes a listener
+>>>>>>> .r409 +
+<<<<<<< .mine +
reset() - Method in interface eu.artemis.demanes.impl.SunSPOT.reconfiguration.ActuatorControl
+======= +
removeMessage(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
resolveDestination(String) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+======= +
RERRReceived(long, long) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
resume() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
RoutingListener - Class in eu.artemis.demanes.impl.SunSPOT.communications
+
 
+
RoutingListener(SystemContext) - Constructor for class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RREPReceived(long, long, long, int, double) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RREPSent(long, long, int, double) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RREQReceived(long, long, long, int, double) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RREQSent(long, long, int, double) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
run() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
 
+
run() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Run method for being run as a thread.
+
+======= +
RERRSent(long, long) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
reset() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions.PowerTransmissionActuator
+
+
Reset the transmission power to the initial value.
+
+
reset() - Method in interface eu.artemis.demanes.impl.SunSPOT.reconfiguration.ActuatorControl
+
 
+
resolveDestination(String) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
resume() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
RoutingListener - Class in eu.artemis.demanes.impl.SunSPOT.communications
+
 
+
RoutingListener(SystemContext) - Constructor for class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RREPReceived(long, long, long, int, double) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RREPSent(long, long, int, double) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RREQReceived(long, long, long, int, double) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RREQSent(long, long, int, double) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
run() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
+
The run method is used to be executed as a separate thread, providing + a loop for listening for new neighbor discovery messages and parsing + them.
+
+
run() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Run method for being run as a thread.
+
+>>>>>>> .r409 +
+ + + +

S

+
+
send(ByteArrayOutputStream, int, int, String, int, int) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+<<<<<<< .mine +
setActive(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+======= +
setActive(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
+
Set the active status for this listener.
+
+
setActive(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Sets the active status of the Neighbor Discovery Requester.
+
+
setActuationProvider(ActionProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setActive(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Sets the active status of the Neighbor Discovery Requester.
+
+
setActuationProvider(ActionProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+======= +
setActuationProvider(ActionProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setActuationProvider(ActionProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+======= +
setActuationProvider(ActionProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setActuationProvider(ActionProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+======= +
setAll() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setAll() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+======= +
setContext(SystemContext) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setContext(SystemContext) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+======= +
setContext(SystemContext) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setContext(SystemContext) - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryProtocol
+======= +
setContext(SystemContext) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setContext(SystemContext) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+======= +
setDestination(byte) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setContext(SystemContext) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+======= +
setErrorMSG(String) - Static method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setContext(SystemContext) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+======= +
setExpiryTime(long) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Sets a new expiry time.
+
+
setInput(String, Object) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setContext(SystemContext) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+======= +
setInput(String, double) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setDestination(byte) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+======= +
setInput(String, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setErrorMSG(String) - Static method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+======= +
setInput(String, double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setExpiryTime(long) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+======= +
setInterval(long) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setHandlerAlive(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+======= +
setKnorm(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setInput(String, Object) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+======= +
setKnorm(double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setInput(String, double) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+======= +
setLevel(Level) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setInput(String, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+======= +
setMessage(LEDColor[]) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setInput(String, double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+======= +
setMessageAtPosition(int, LEDColor) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setInterval(long) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+======= +
setName(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setKnorm(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+======= +
setNormFactors(Hashtable) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setKnorm(double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+======= +
setNormFactors(String, double) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setLevel(Level) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+======= +
setNormFactors(String, double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setMessage(LEDColor[]) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+======= +
setNormFactors(Hashtable) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setMessageAtPosition(int, LEDColor) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+======= +
setNumber(int) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setName(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+======= +
setObservationProvider(ObservationProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setNormFactors(Hashtable) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+======= +
setObservationProvider(ObservationProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setNormFactors(String, double) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+======= +
setObservationProvider(ObservationProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setNormFactors(String, double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+======= +
setOff() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setNormFactors(Hashtable) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+======= +
setPort(int) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
+
Sets a new port for listening to neighbor requests.
+
+
setPTACT(PowerTransmissionActuator) - Method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setNumber(int) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+======= +
setReasoner(Reasoner) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setObservationProvider(ObservationProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+======= +
setRequestID(long) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
+
Set the request ID of the instanced PDU
+
+
setRunning(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Sets the neighbor discovery running state.
+
+
setState(int) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setObservationProvider(ObservationProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+======= +
setStatusIndicator(LEDColor) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setObservationProvider(ObservationProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+======= +
setTriggeringPolicy(TriggerPolicy) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setOff() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+======= +
setTypeOfPDU(byte) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
+
Set the type of the instanced PDU
+
+
setUpdatingInterval(long) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
setPort(int) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
 
+
setPTACT(PowerTransmissionActuator) - Method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
setReasoner(Reasoner) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
setRequestID(long) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
setRunning(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
 
+
setState(int) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
setStatusIndicator(LEDColor) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
setTriggeringPolicy(TriggerPolicy) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
setTypeOfPDU(byte) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
setUpdatingInterval(long) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
setValue(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setValue(double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setValueNorm(Double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setValueNorm(double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setVarID(String) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
SEVERE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+======= +
setValue(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setValue(double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setValueNorm(Double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setValueNorm(double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setVarID(String) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
SEVERE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+>>>>>>> .r409 +
+
SEVERE is a message level indicating a serious failure.
+
+
severe(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
SPOT_URN_NSS - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The SunSPOT property name for the NSS part for construction any URN, "urn.nss.spotpart".
+
+
SPOT_URN_NSS_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The default value for the NSS part for construction any URN, "SunSPOT" + last four bytes of IEEE address.
+
+
start() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
start() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
start() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+<<<<<<< .mine +
start() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+======= +
start() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Starts the neighbor discovery daemon.
+
+
startApp() - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
startApp() - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+======= +
STARTED - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
STARTED - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+======= +
STATUS_IS_NOT_READY - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+>>>>>>> .r409 +
 
+<<<<<<< .mine +
STATUS_IS_NOT_READY - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
STATUS_IS_READY - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
STATUS_IS_STANDBY - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
stop() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
stop() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
stop() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
 
+
SunSPOTBundle - Class in eu.artemis.demanes.impl.SunSPOT.datatypes
+
 
+
SunSPOTBundle() - Constructor for class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
SunSPOTPowerController - Class in eu.artemis.demanes.impl.SunSPOT
+======= +
STATUS_IS_READY - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
STATUS_IS_STANDBY - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
stop() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
stop() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
stop() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+>>>>>>> .r409 +
+
Stops the neighbor discovery daemon.
+
+
SunSPOTBundle - Class in eu.artemis.demanes.impl.SunSPOT.datatypes
+
 
+
SunSPOTBundle() - Constructor for class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
SunSPOTPowerController - Class in eu.artemis.demanes.impl.SunSPOT
+
+
The startApp method of this class is called by the VM to start the + application.
+
+
SunSPOTPowerController() - Constructor for class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
suspend() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
SUSPENDED - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
switchPressed(SwitchEvent) - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
switchReleased(SwitchEvent) - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
SYSTEM_ERROR - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
SYSTEM_ERROR indicates that the log is going to be done to System.err.
+
+
SYSTEM_OUTPUT - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
SYSTEM_OUTPUT indicates that the log is going to be done to System.out.
+
+
SystemContext - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
SystemContext() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
SystemProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
SystemProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
 
+<<<<<<< .mine +
+ + + +

T

+
+
toString() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+======= +
+ + + +

T

+
+
toByteArray(byte, long) - Static method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
+
Creates a newly allocated byte array for a Neighbor Discovery PDU of type + typeOfPDU and request ID requestID.
+
+
toString() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+>>>>>>> .r409 +
 
+
toString() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Returns a string representation of this Level.
+
+
toString() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
trigger() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
trigger(ANES_URN, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
trigger() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+
 
+
trigger(ANES_URN, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+
 
+
trigger() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+
 
+
trigger(ANES_URN, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+
 
+
TRIGGER_INTERVAL_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
TriggerPolicyProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
TriggerPolicyProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
+ + + +

U

+
+
unpause() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
unregisterActuator(Actuator) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
unregisterObserver(Observer) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
unregisterTriggerable(Triggerable) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
UPDATE_LIST_BEHAVIOUR_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.MediatorProperties
+
 
+
updateMessage(Object, MarqueeMessage) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
updateNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
+ + + +

V

+
+
VAR_DELIM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_ID - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_KNORM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
VAR_MAX - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_MIN - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_NUMBER - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
VAR_TYPE - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_TYPE_IN - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_TYPE_OUT - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
VAR_VALUE_NORM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
Variable - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
Variable(String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
VARIABLE_ERROR_ACCESS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
VARIABLE_ID_NOTFOUND - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
+ + + +

W

+
+
WARNING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
WARNING is a message level indicating a potential problem.
+
+
warning(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
+A B C D E F G H I K L M N O P R S T U V W 
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/index-all.html.mine b/doc/index-all.html.mine new file mode 100644 index 0000000..6f88d8c --- /dev/null +++ b/doc/index-all.html.mine @@ -0,0 +1,1397 @@ + + + + + +Index (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
A B C D E F G H I K L M N O P R S T U V W  + + +

A

+
+
activateStatusIndicator() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
ActuatorControl - Interface in eu.artemis.demanes.impl.SunSPOT.reconfiguration
+
 
+
addListener(CommunicationListener, int) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
addListener(OnDemandNeighborDiscoveryListener) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
 
+
addMessage(MarqueeMessage) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
addNeighbor(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
 
+
ALL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
ALL indicates that all messages should be logged.
+
+
+ + + +

B

+
+
BASIC_NEIGHBOR_DISCOVERY - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
BASIC_NEIGHBOR_DISCOVERY_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
BASIC_NEIGHBOR_DISCOVERY_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
BATTERY_LEVEL_OBSERVATION - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BATTERY_LEVEL_OBSERVATION_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BATTERY_LEVEL_OBSERVATION_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BATTERY_LEVEL_OBSERVATION_TEST - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BATTERY_LEVEL_OBSERVATION_TEST_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BATTERY_LEVEL_OBSERVATION_TEST_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BatteryLevelObservation - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
BatteryLevelObservation(Properties, String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.BatteryLevelObservation
+
 
+
BL_EVENT - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.Events
+
 
+
BLINK_INTERVAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
blinkActivity1(LEDColor) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
blinkActivity2(LEDColor) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
BLObservationURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
BLObservationURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
BS_ADDRESS_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
Basestation address for Den Haag video.
+
+
BS_ADDRESSS_LONG - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
 
+
+ + + +

C

+
+
CallbackFunction(String, int, int, String, int, int) - Method in interface eu.artemis.demanes.impl.SunSPOT.communications.CommunicationListener
+
 
+
checkRequestID(long) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
 
+
clearMarquee() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
clearTable() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
 
+
clone() - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
code - Variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
code - Variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
CommunicationListener - Interface in eu.artemis.demanes.impl.SunSPOT.communications
+
 
+
CommunicationManager - Class in eu.artemis.demanes.impl.SunSPOT.communications
+
 
+
CommunicationManager(SystemContext) - Constructor for class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
CONFIG - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
CONFIG is a message level for static configuration messages.
+
+
config(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
CONFIG_FILE - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_KEYNOTFOUND - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_KEYNUMBERS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_POINTS_COLUMN - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_POINTS_ROW_HEADER_NOTFOUND - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_POINTS_VALUE_NOTVALID - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_POINTS_VALUES_UNSORTED - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_VALUE_NOTVALID - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
containsKey(String) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
containsKey(String, Class) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
CR0_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.PTActionProperties
+
 
+
CR_MAX_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
CR_MIN_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
CREATED - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
+ + + +

D

+
+
deactivateStatusIndicator() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
DEBUG - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
DEBUG is a message level for debugging information.
+
+
debug(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
DEFAULT_HANDLER_INTERVAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Default interval for the internal incoming message handler.
+
+
DEFAULT_HANDLER_INTERVAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+
+
Default interval for the internal incoming message handler.
+
+
DEFAULT_PORT - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Default port for neighbor discovery communications.
+
+
DEFAULT_PORT - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+
+
Default port for neighbor discovery communications.
+
+
DefaultConfig - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
Class with the definition of basics keys for the configuration file + It also contains the description of the format for values
+
+
DefaultConfig() - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.DefaultConfig
+
 
+
defaultProp - Variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.DefaultConfig
+
 
+
DELIM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
DELTA_CR_KEY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
DELTA_CR_KEY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
DELTA_CR_MIN_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
DELTA_ND_MIN_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
DEMANESResources - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
DEMANESResources() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
denormVar() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
destroyApp(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
+
Called if the MIDlet is terminated by the system.
+
+
DIED - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
DISABLED - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
displayInformation() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
 
+
doNeighborDiscovery() - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryProtocol
+
 
+
doNeighborDiscovery() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+
 
+
doNeighborDiscovery() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+
 
+
doNeighborDiscovery() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
 
+
doNeighborDiscovery() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+
 
+
doRequest() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
 
+
du_CR_ID_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
du_ND_ID_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
+ + + +

E

+
+
E_CR_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
e_E_ID_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
e_ND_ID_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
equals(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
equals(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Compare two objects for value equality.
+
+
equals(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
ERRORMSG - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
Class for error messages description
+
+
ERRORMSG() - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
ErrorPrint(String) - Static method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
eu.artemis.demanes.impl.SunSPOT - package eu.artemis.demanes.impl.SunSPOT
+
 
+
eu.artemis.demanes.impl.SunSPOT.common - package eu.artemis.demanes.impl.SunSPOT.common
+
 
+
eu.artemis.demanes.impl.SunSPOT.communications - package eu.artemis.demanes.impl.SunSPOT.communications
+
 
+
eu.artemis.demanes.impl.SunSPOT.datatypes - package eu.artemis.demanes.impl.SunSPOT.datatypes
+
 
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner - package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration - package eu.artemis.demanes.impl.SunSPOT.reconfiguration
+
 
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions - package eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions
+
 
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations - package eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor - package eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor
+
 
+
eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee - package eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+
 
+
eu.artemis.demanes.impl.SunSPOT.utils.logging - package eu.artemis.demanes.impl.SunSPOT.utils.logging
+
 
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery - package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand - package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
 
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu - package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu
+
 
+
evaluate() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
evaluate() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
Events - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
Events() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.Events
+
 
+
+ + + +

F

+
+
FDM_PRIM_CONFIG_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
FDM_SEC_CONFIG_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
FINE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
FINE is a message level providing tracing information.
+
+
fine(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
FINER - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
FINER indicates a fairly detailed tracing message.
+
+
finer(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
FINEST - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
FINEST indicates a highly detailed tracing message.
+
+
finest(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
FIRST_LED - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The first LED index for the LEDs array.
+
+
FuzzyDM - Interface in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
FuzzyDM + + This is an interface to a decision making function
+
+
+ + + +

G

+
+
generatePDU(byte, long) - Static method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
get(String) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
get(String, Class) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
getActions() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions.PowerTransmissionActuator
+
+
Get the list of actions provided by this actuator.
+
+
getActions() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
getCommunicationManager() - Method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
getDestination() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
getExpiryTime() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
 
+
getInputsID() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
getInputsID() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getInputsSet() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
getInputsSet() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getInstance(String, Properties) - Static method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFactory
+
 
+
getInstance(ObservationType, Properties, String) - Static method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationFactory
+
 
+
getInstance(NeighborDiscoveryType) - Static method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NDPFactory
+
 
+
getLastErrorMSG() - Static method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
getLevel() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
getLogger() - Method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
getMarquee() - Method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
getMaximumPTX(int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
 
+
getMaximumPTXIndex(int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the maximum index in the available transmission + powers array.
+
+
getMessage() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
getMinimumPTX(int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
 
+
getMinimumPTXIndex(int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the minimum index in the available transmission + powers array.
+
+
getName() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Return the non-localized string name of the Level.
+
+
getName() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
getNeighborCount() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
 
+
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
getNeighborList() - Method in interface eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservationExtension
+
 
+
getNeighborList() - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryProtocol
+
 
+
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+
 
+
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+
 
+
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
 
+
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+
 
+
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
 
+
getNodeDegree() - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryProtocol
+
 
+
getNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+
 
+
getNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+
 
+
getNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
 
+
getNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+
 
+
getObservationID() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.BatteryLevelObservation
+
+
Gets the ID of an observation.
+
+
getObservationID() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
getObservations() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
getObservations() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
getOutput(String) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
getOutput(String) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getOutputsID() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
getOutputsID() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getOutputsSet() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
getOutputsSet() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getPort() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
 
+
getProp() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.DefaultConfig
+
 
+
getPTACT() - Method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
getPTX() - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the actual transmission power.
+
+
getPTXatIndex(int, int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the transmission power given an index.
+
+
getPTXIndex(int, int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the index of a given power of transmission + related to the REAL available ones.
+
+
getRadioChannel() - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the actual radio channel in use.
+
+
getRequestID() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
getState() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
getType(String) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
getTypeOfPDU() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
getUpdatingInterval() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
getValue() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
getValue() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.BatteryLevelObservation
+
+
Get the batteries remaining capacity in mAh.
+
+
getValue() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
getValue(ANES_URN) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
getValueNorm() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
+ + + +

H

+
+
hashCode() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
hashCode() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Generate a hashcode.
+
+
hashCode() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
+ + + +

I

+
+
IEEE_ADDRESS - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The SunSPOT property name for its IEEE address, "spot.address".
+
+
IEEE_ADDRESS_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The SunSPOT IEEE Address.
+
+
IMPORTANCE_NORMAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
INFO - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
INFO is a message level for informational messages.
+
+
info(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
init() - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
Interp1DFuzzyDM - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
Interp1DFuzzyDM(String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
Interp1DFuzzyDM(InputStream) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
Interp1DFuzzyDM(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
intValue() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Get the integer value for this level.
+
+
invoke(ANES_URN, ANES_BUNDLE) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
isActive() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
 
+
isActive() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Checks if the Neighbor Discovery Requester is alive.
+
+
isHandlerAlive() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+
 
+
isRunning() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
 
+
+ + + +

K

+
+
KCR_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
KdeltaND_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
KE_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
KEY - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
Class for keys and constants definition
+
+
KEY() - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
KND_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
KSI_ND_PROPERTY_NAME - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
+ + + +

L

+
+
LAST_LED - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The last LED index for the LEDs array.
+
+
Level - Class in eu.artemis.demanes.impl.SunSPOT.utils.logging
+
+
The Level class defines a set of standard logging levels that can be used to + control logging output.
+
+
Level(String, int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Create a named Level with a given integer value.
+
+
load(InputStream) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
+
Load Inference System from a storage device
+
+
load(Properties) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
load(InputStream) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
load(Properties) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
log(Level, String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
log(Level, ByteArrayOutputStream) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
LOG_DESTINATION - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The log destination property name, "log.destination".
+
+
LOG_DESTINATION_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The default log destination (STDOUT) for the whole application.
+
+
LOG_LEVEL - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The log level property name, "log.level".
+
+
LOG_LEVEL_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The default log level (ALL) for the whole application.
+
+
Logger - Class in eu.artemis.demanes.impl.SunSPOT.utils.logging
+
 
+
Logger() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
Protected method to construct a logger with a default configuration.
+
+
Logger(SystemContext) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger(String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger(byte) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger(String, byte) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger(String, byte, Level) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
+ + + +

M

+
+
maintainNeighborTable() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
 
+
Marquee - Class in eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+
+
Note: Although some parts should be considered to be accessed in a + synchronized way allowing different callers for the marquee, the actual usage + does not require it.
+
+
Marquee() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
Marquee(SystemContext) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
MarqueeAddMessageException - Exception in eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+
 
+
MarqueeAddMessageException() - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeAddMessageException
+
 
+
MarqueeAddMessageException(String) - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeAddMessageException
+
 
+
MarqueeMessage - Class in eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+
 
+
MarqueeMessage() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
MarqueeMessage(LEDColor[]) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
MAXIMUM_POWER_TRANSMISSION - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
The maximum power of transmission in dBm.
+
+
MediatorProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
MediatorProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.MediatorProperties
+
 
+
MESSAGE_LENGTH - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
MINIMUM_INTERVAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
+
Minimum interval time in milliseconds for rotating the messages in the + marquee
+
+
MINIMUM_POWER_TRANSMISSION - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
The minimum power of transmission in dBm.
+
+
MODE_ANYCAST - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
MODE_BROADCAST - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
MODE_MULTICAST - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
MODE_UNICAST - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
+ + + +

N

+
+
ND_EVENT - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.Events
+
 
+
ND_MIN_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
ND_R_PROPERTY_NAME - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
NDinitPROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
NDObservationURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
NDObservationURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
NDPDU_REQUEST - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
NDPDU_RESPONSE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
NDPDU_RESPONSE_ACK - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
NDPFactory - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
+
A NDPFactory is a factory method to provide a Neighbor Discovery Protocol + manager selected accordingly to the instance requested.
+
+
NDPFactory() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NDPFactory
+
 
+
NDRefPROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
NeighborDiscoveryException - Exception in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NeighborDiscoveryException(String) - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryException
+
 
+
NeighborDiscoveryFactoryException - Exception in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NeighborDiscoveryFactoryException(String) - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryFactoryException
+
 
+
NeighborDiscoveryPDU - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu
+
 
+
NeighborDiscoveryPDU(byte, long) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
NeighborDiscoveryPDUException - Exception in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu
+
 
+
NeighborDiscoveryPDUException(String, String) - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDUException
+
 
+
NeighborDiscoveryProtocol - Interface in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NeighborDiscoveryType - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NeighborDiscoveryType(String, int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V1 - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V1_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V1_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V2 - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V2_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V2_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_OBSERVATION - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_TEST - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_TEST_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_TEST_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NodeDegreeManagerV1 - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NodeDegreeManagerV1() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+
 
+
NodeDegreeManagerV2 - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NodeDegreeManagerV2() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+
 
+
NodeDegreeObservation - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
NodeDegreeObservation() - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
NodeDegreeObservation(Properties, String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
NodeDegreeObservationExtension - Interface in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
normVar() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
notify(Radiogram) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
 
+
notify(Radiogram) - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryListener
+
 
+
notify(Radiogram) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+
 
+
notifyForward(long, long, long, long) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
NUMBER_OF_INPUTS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
NUMBER_OF_OUTPUTS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
NUMBER_OF_POINTS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
+ + + +

O

+
+
ObservationFactory - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
ObservationFactory() - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationFactory
+
 
+
ObservationType - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
ObservationType(String, int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
OFF - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
OFF is a special level that can be used to turn off logging.
+
+
ON_DEMAND_NODE_DEGREE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
ON_DEMAND_NODE_DEGREE_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
ON_DEMAND_NODE_DEGREE_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
OnDemandNeighborDiscovery - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
 
+
OnDemandNeighborDiscovery() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
The main constructor for this class provides the basic functionality of + the three-tier DEMANES/UPM Neighbor Discovery Protocol.
+
+
OnDemandNeighborDiscoveryCommunicationsListener - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
 
+
OnDemandNeighborDiscoveryCommunicationsListener(int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
 
+
OnDemandNeighborDiscoveryListener - Interface in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
 
+
OnDemandNeighborDiscoveryOriginal - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
 
+
OnDemandNeighborDiscoveryOriginal() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+
+
The main constructor for this class provides the basic functionality of + the three-tier DEMANES/UPM Neighbor Discovery Protocol.
+
+
OnDemandNeighborDiscoveryRequester - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
 
+
OnDemandNeighborDiscoveryRequester(int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
 
+
OnDemandNeighborTableManager - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
 
+
OnDemandNeighborTableManager() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
 
+
OnDemandNeighborTableManager(long) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
 
+
ORAMediatorForSunSPOT - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration
+
 
+
ORAMediatorForSunSPOT() - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
ORAMediatorForSunSPOT(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
+ + + +

P

+
+
parsePDU(byte[]) - Static method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
pause() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
pauseApp() - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
POINTS_ARRAY - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
POINTS_ROW_DELIM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
PowerScalingController - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
+
+
PowerScalingController(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
PowerScalingControllerFactory - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
PowerScalingControllerFactory() - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFactory
+
 
+
PowerScalingControllerFuzzyLogic - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
PowerScalingControllerFuzzyLogic(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+
 
+
PowerScalingControllerInterp1FDM - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
+
+
PowerScalingControllerInterp1FDM(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+
 
+
PowerScalingMonitor - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor
+
 
+
PowerScalingMonitor(SystemContext, Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
PowerTransmissionActuator - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions
+
+
PowerTransmissionActuator
+
+
PowerTransmissionActuator(SystemContext, Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions.PowerTransmissionActuator
+
 
+
PRIORITY_NORMAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
PTActionProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
PTActionProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.PTActionProperties
+
 
+
PTActionURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
PTActionURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
put(String, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
put(String, String) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
+ + + +

R

+
+
RADIO_PROPERTIES_ERROR - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
ERROR CONSTANT.
+
+
RadioProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
RadioProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
 
+
ReasonerProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
ReasonerProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
REASONING_FUNCTION - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
ReconfigurationResources - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
ReconfigurationResources() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
RECORD - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
RECORD indicates that the log is going to be stored in an internal + RecordStore.
+
+
registerActuator(Actuator) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
registerObserver(Observer) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
registerTriggerable(Triggerable) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
REMOTE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
REMOTE indicates that the log is going to be casted to a remote logging + facility.
+
+
removeListener(CommunicationListener) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
removeListener(OnDemandNeighborDiscoveryListener) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
 
+
removeMessage(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
RERRReceived(long, long) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RERRSent(long, long) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
reset() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions.PowerTransmissionActuator
+
+
Reset the transmission power to the initial value.
+
+
reset() - Method in interface eu.artemis.demanes.impl.SunSPOT.reconfiguration.ActuatorControl
+
 
+
resolveDestination(String) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
resume() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
RoutingListener - Class in eu.artemis.demanes.impl.SunSPOT.communications
+
 
+
RoutingListener(SystemContext) - Constructor for class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RREPReceived(long, long, long, int, double) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RREPSent(long, long, int, double) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RREQReceived(long, long, long, int, double) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RREQSent(long, long, int, double) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
run() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
 
+
run() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Run method for being run as a thread.
+
+
+ + + +

S

+
+
send(ByteArrayOutputStream, int, int, String, int, int) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
setActive(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
 
+
setActive(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Sets the active status of the Neighbor Discovery Requester.
+
+
setActuationProvider(ActionProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
setActuationProvider(ActionProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+
 
+
setActuationProvider(ActionProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+
 
+
setAll() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
setContext(SystemContext) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
setContext(SystemContext) - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryProtocol
+
 
+
setContext(SystemContext) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+
 
+
setContext(SystemContext) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+
 
+
setContext(SystemContext) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
 
+
setContext(SystemContext) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+
 
+
setDestination(byte) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
setErrorMSG(String) - Static method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
setExpiryTime(long) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
 
+
setHandlerAlive(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryOriginal
+
 
+
setInput(String, Object) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
setInput(String, double) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
setInput(String, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
setInput(String, double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
setInterval(long) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
setKnorm(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setKnorm(double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setLevel(Level) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
setMessage(LEDColor[]) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
setMessageAtPosition(int, LEDColor) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
setName(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
setNormFactors(Hashtable) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
setNormFactors(String, double) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
setNormFactors(String, double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
setNormFactors(Hashtable) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
setNumber(int) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setObservationProvider(ObservationProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
setObservationProvider(ObservationProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+
 
+
setObservationProvider(ObservationProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+
 
+
setOff() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
setPort(int) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
 
+
setPTACT(PowerTransmissionActuator) - Method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
setReasoner(Reasoner) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
setRequestID(long) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
setRunning(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
 
+
setState(int) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
setStatusIndicator(LEDColor) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
setTriggeringPolicy(TriggerPolicy) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
setTypeOfPDU(byte) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
setUpdatingInterval(long) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
setValue(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setValue(double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setValueNorm(Double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setValueNorm(double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setVarID(String) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
SEVERE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
SEVERE is a message level indicating a serious failure.
+
+
severe(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
SPOT_URN_NSS - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The SunSPOT property name for the NSS part for construction any URN, "urn.nss.spotpart".
+
+
SPOT_URN_NSS_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The default value for the NSS part for construction any URN, "SunSPOT" + last four bytes of IEEE address.
+
+
start() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
start() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
start() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
start() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
 
+
startApp() - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
STARTED - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
STATUS_IS_NOT_READY - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
STATUS_IS_READY - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
STATUS_IS_STANDBY - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
stop() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
stop() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
stop() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
 
+
SunSPOTBundle - Class in eu.artemis.demanes.impl.SunSPOT.datatypes
+
 
+
SunSPOTBundle() - Constructor for class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
SunSPOTPowerController - Class in eu.artemis.demanes.impl.SunSPOT
+
+
The startApp method of this class is called by the VM to start the + application.
+
+
SunSPOTPowerController() - Constructor for class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
suspend() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
SUSPENDED - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
switchPressed(SwitchEvent) - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
switchReleased(SwitchEvent) - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
SYSTEM_ERROR - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
SYSTEM_ERROR indicates that the log is going to be done to System.err.
+
+
SYSTEM_OUTPUT - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
SYSTEM_OUTPUT indicates that the log is going to be done to System.out.
+
+
SystemContext - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
SystemContext() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
SystemProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
SystemProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
 
+
+ + + +

T

+
+
toString() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
toString() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Returns a string representation of this Level.
+
+
toString() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
trigger() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
trigger(ANES_URN, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
trigger() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+
 
+
trigger(ANES_URN, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+
 
+
trigger() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+
 
+
trigger(ANES_URN, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+
 
+
TRIGGER_INTERVAL_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
TriggerPolicyProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
TriggerPolicyProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
+ + + +

U

+
+
unpause() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
unregisterActuator(Actuator) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
unregisterObserver(Observer) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
unregisterTriggerable(Triggerable) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
UPDATE_LIST_BEHAVIOUR_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.MediatorProperties
+
 
+
updateMessage(Object, MarqueeMessage) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
updateNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
+ + + +

V

+
+
VAR_DELIM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_ID - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_KNORM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
VAR_MAX - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_MIN - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_NUMBER - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
VAR_TYPE - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_TYPE_IN - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_TYPE_OUT - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
VAR_VALUE_NORM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
Variable - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
Variable(String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
VARIABLE_ERROR_ACCESS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
VARIABLE_ID_NOTFOUND - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
+ + + +

W

+
+
WARNING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
WARNING is a message level indicating a potential problem.
+
+
warning(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
+A B C D E F G H I K L M N O P R S T U V W 
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/index-all.html.r390 b/doc/index-all.html.r390 new file mode 100644 index 0000000..7ee8d3a --- /dev/null +++ b/doc/index-all.html.r390 @@ -0,0 +1,800 @@ + + + + + +Index (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
A B C D E F G I K L M N O P R S T U V W  + + +

A

+
+
ALL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
ALL indicates that all messages should be logged.
+
+
+ + + +

B

+
+
BL_EVENT - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.Events
+
 
+
BLObservationURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
BLObservationURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
+ + + +

C

+
+
clone() - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
CONFIG - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
CONFIG is a message level for static configuration messages.
+
+
config(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
containsKey(String) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
containsKey(String, Class) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
CR0_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.PTActionProperties
+
 
+
CR_MAX_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
CR_MIN_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
CREATED - Static variable in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor
+
 
+
+ + + +

D

+
+
DEBUG - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
DEBUG is a message level for debugging information.
+
+
debug(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
DELTA_CR_KEY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
DELTA_CR_KEY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
DELTA_ND_MIN_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
DEMANESResources - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
DEMANESResources() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
denormOutputs() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FDM1
+
 
+
denormOutputs() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.TestFuzzyDM
+
 
+
destroyApp(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
+
Called if the MIDlet is terminated by the system.
+
+
destroyApp(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.TesterForController
+
+
Called if the MIDlet is terminated by the system.
+
+
DIED - Static variable in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor
+
 
+
+ + + +

E

+
+
E_CR_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
equals(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Compare two objects for value equality.
+
+
ERROR_CONFIG_FILE - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
ERROR_CONFIG_FILE_KEYNOTFOUND - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
ERROR_CONFIG_FILE_KEYNUMBERS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
ERROR_CONFIG_FILE_POINTS_COLUMN - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
ERROR_CONFIG_FILE_POINTS_ROW_HEADER_NOTFOUND - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
ERROR_CONFIG_FILE_POINTS_VALUE_NOTVALID - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
ERROR_CONFIG_FILE_VALUE_NOTVALID - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
ERROR_DELIM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
eu.artemis.demanes.impl.SunSPOT - package eu.artemis.demanes.impl.SunSPOT
+
 
+
eu.artemis.demanes.impl.SunSPOT.common - package eu.artemis.demanes.impl.SunSPOT.common
+
 
+
eu.artemis.demanes.impl.SunSPOT.datatypes - package eu.artemis.demanes.impl.SunSPOT.datatypes
+
 
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner - package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration - package eu.artemis.demanes.impl.SunSPOT.reconfiguration
+
 
+
eu.artemis.demanes.impl.SunSPOT.tests - package eu.artemis.demanes.impl.SunSPOT.tests
+
 
+
eu.artemis.demanes.impl.SunSPOT.TriggerPolicy - package eu.artemis.demanes.impl.SunSPOT.TriggerPolicy
+
 
+
eu.artemis.demanes.impl.SunSPOT.utils.logging - package eu.artemis.demanes.impl.SunSPOT.utils.logging
+
 
+
evaluate() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FDM1
+
 
+
evaluate() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
evaluate() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
evaluate() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.TestFuzzyDM
+
 
+
Events - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
Events() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.Events
+
 
+
+ + + +

F

+
+
FDM1 - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
FDM1() - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FDM1
+
 
+
FINE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
FINE is a message level providing tracing information.
+
+
fine(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
FINER - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
FINER indicates a fairly detailed tracing message.
+
+
finer(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
FINEST - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
FINEST indicates a highly detailed tracing message.
+
+
finest(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
FuzzyDM - Interface in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
FuzzyDM + + This is an interface to a decision making function
+
+
+ + + +

G

+
+
get(String) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
get(String, Class) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
getActions() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
getActions() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerTransmissionActuator
+
 
+
getDestination() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
getInputsID() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FDM1
+
 
+
getInputsID() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
getInputsID() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getInputsID() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.TestFuzzyDM
+
 
+
getInputsSet() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FDM1
+
 
+
getInputsSet() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
getInputsSet() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getInputsSet() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.TestFuzzyDM
+
 
+
getLevel() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
getName() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Return the non-localized string name of the Level.
+
+
getName() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
getObservationID() - Method in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.NDObservation
+
 
+
getObservations() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
getObservations() - Method in class eu.artemis.demanes.impl.SunSPOT.tests.TestObserver
+
 
+
getObservations() - Method in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor
+
 
+
getOutput(String) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FDM1
+
 
+
getOutput(String) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
getOutput(String) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getOutput(String) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.TestFuzzyDM
+
 
+
getOutputsID() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FDM1
+
 
+
getOutputsID() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
getOutputsID() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getOutputsID() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.TestFuzzyDM
+
 
+
getOutputsSet() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FDM1
+
 
+
getOutputsSet() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
getOutputsSet() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getOutputsSet() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.TestFuzzyDM
+
 
+
getState() - Method in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor
+
 
+
getType(String) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
getValue(ANES_URN) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
getValue() - Method in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.NDObservation
+
 
+
+ + + +

I

+
+
IEEE_ADDRESS - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
 
+
IEEE_ADDRESS_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
 
+
INFO - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
INFO is a message level for informational messages.
+
+
info(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
init() - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
Interp1DFuzzyDM - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
Interp1DFuzzyDM(InputStream) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
intValue() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Get the integer value for this level.
+
+
invoke(ANES_URN, ANES_BUNDLE) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
+ + + +

K

+
+
KCR_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
KdeltaND_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
KE_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
KND_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
KSI_ND_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
+ + + +

L

+
+
Level - Class in eu.artemis.demanes.impl.SunSPOT.utils.logging
+
+
The Level class defines a set of standard logging levels that can be + used to control logging output.
+
+
Level(String, int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Create a named Level with a given integer value.
+
+
load(InputStream) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FDM1
+
 
+
load(String) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FDM1
+
 
+
load(InputStream) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
+
Load Inference System from a storage device
+
+
load(InputStream) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
load(InputStream) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.TestFuzzyDM
+
 
+
log(Level, String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger - Class in eu.artemis.demanes.impl.SunSPOT.utils.logging
+
 
+
Logger() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger(String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger(byte) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger(String, byte) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger(String, byte, Level) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
+ + + +

M

+
+
MAXIMUM_POWER_TRANSMISSION - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
 
+
MediatorProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
MediatorProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.MediatorProperties
+
 
+
MINIMUM_POWER_TRANSMISSION - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
 
+
+ + + +

N

+
+
ND_EVENT - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.Events
+
 
+
ND_MIN_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
NDinitPROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
NDObservation - Class in eu.artemis.demanes.impl.SunSPOT.TriggerPolicy
+
 
+
NDObservation() - Constructor for class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.NDObservation
+
 
+
NDObservation(String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.NDObservation
+
 
+
NDObservationURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
NDObservationURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
NDRefPROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
normInputs() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FDM1
+
 
+
normInputs() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.TestFuzzyDM
+
 
+
NUMBER_OF_INPUTS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
NUMBER_OF_OUTPUTS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
NUMBER_OF_POINTS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
+ + + +

O

+
+
OFF - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
OFF is a special level that can be used to turn off logging.
+
+
ORAMediatorForSunSPOT - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration
+
 
+
ORAMediatorForSunSPOT() - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
ORAMediatorForSunSPOT(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
output - Static variable in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.TestControllerOuput
+
 
+
+ + + +

P

+
+
pauseApp() - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
pauseApp() - Method in class eu.artemis.demanes.impl.SunSPOT.TesterForController
+
 
+
POINTS_ARRAY - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
POINTS_ROW_DELIM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
PowerScalingController - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
+
+
PowerScalingController(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
PowerScalingMonitor - Class in eu.artemis.demanes.impl.SunSPOT.TriggerPolicy
+
 
+
PowerScalingMonitor(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor
+
 
+
PowerTransmissionActuator - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration
+
 
+
PowerTransmissionActuator() - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerTransmissionActuator
+
 
+
PowerTransmissionActuator(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerTransmissionActuator
+
 
+
PTActionProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
PTActionProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.PTActionProperties
+
 
+
PTActionURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
PTActionURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
put(String, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
+ + + +

R

+
+
ReasonerProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
ReasonerProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
ReconfigurationResources - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
ReconfigurationResources() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
RECORD - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
RECORD indicates that the log is going to be stored in an internal RecordStore.
+
+
registerActuator(Actuator) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
registerObserver(Observer) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
registerTriggerable(Triggerable) - Method in class eu.artemis.demanes.impl.SunSPOT.tests.TestTriggerPolicy
+
 
+
registerTriggerable(Triggerable) - Method in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor
+
 
+
REMOTE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
REMOTE indicates that the log is going to be casted to a remote logging facility.
+
+
resume() - Method in class eu.artemis.demanes.impl.SunSPOT.tests.TestTriggerPolicy
+
 
+
resume() - Method in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor
+
 
+
+ + + +

S

+
+
setActuationProvider(ActionProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
setActuationProvider(ActionProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.tests.TestReasoner
+
 
+
setAll() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
setDestination(byte) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
setInput(String, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FDM1
+
 
+
setInput(String, Object) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
setInput(String, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
setInput(String, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.TestFuzzyDM
+
 
+
setInterval(long) - Method in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor
+
 
+
setLevel(Level) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
setName(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
setNormFactors(Hashtable) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FDM1
+
 
+
setNormFactors(Object[]) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FDM1
+
 
+
setNormFactors(Hashtable) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
setNormFactors(Hashtable) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
setNormFactors(Hashtable) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.TestFuzzyDM
+
 
+
setObservationProvider(ObservationProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
setObservationProvider(ObservationProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.tests.TestReasoner
+
 
+
setOff() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
setReasoner(Reasoner) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
setState(int) - Method in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor
+
 
+
setTriggeringPolicy(TriggerPolicy) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
SEVERE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
SEVERE is a message level indicating a serious failure.
+
+
severe(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
start() - Method in class eu.artemis.demanes.impl.SunSPOT.tests.TestTriggerPolicy
+
 
+
start() - Method in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor
+
 
+
startApp() - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
startApp() - Method in class eu.artemis.demanes.impl.SunSPOT.TesterForController
+
 
+
STARTED - Static variable in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor
+
 
+
stop() - Method in class eu.artemis.demanes.impl.SunSPOT.tests.TestTriggerPolicy
+
 
+
stop() - Method in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor
+
 
+
SunSPOTBundle - Class in eu.artemis.demanes.impl.SunSPOT.datatypes
+
 
+
SunSPOTBundle() - Constructor for class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
SunSPOTPowerController - Class in eu.artemis.demanes.impl.SunSPOT
+
+
The startApp method of this class is called by the VM to start the + application.
+
+
SunSPOTPowerController() - Constructor for class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
suspend() - Method in class eu.artemis.demanes.impl.SunSPOT.tests.TestTriggerPolicy
+
 
+
suspend() - Method in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor
+
 
+
SUSPENDED - Static variable in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor
+
 
+
SYSTEM_ERROR - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
SYSTEM_ERROR indicates that the log is going to be done to System.err.
+
+
SYSTEM_OUTPUT - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
SYSTEM_OUTPUT indicates that the log is going to be done to System.out.
+
+
SystemProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
SystemProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
 
+
+ + + +

T

+
+
TestController - Class in eu.artemis.demanes.impl.SunSPOT.tests
+
 
+
TestController() - Constructor for class eu.artemis.demanes.impl.SunSPOT.tests.TestController
+
 
+
TestControllerOuput - Class in eu.artemis.demanes.impl.SunSPOT.TriggerPolicy
+
 
+
TestControllerOuput() - Constructor for class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.TestControllerOuput
+
 
+
TesterForController - Class in eu.artemis.demanes.impl.SunSPOT
+
+
The startApp method of this class is called by the VM to start the + application.
+
+
TesterForController() - Constructor for class eu.artemis.demanes.impl.SunSPOT.TesterForController
+
 
+
TestFuzzyDM - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
TestFuzzyDM(InputStream) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.TestFuzzyDM
+
 
+
TestFuzzyDM(String[], String[]) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.TestFuzzyDM
+
 
+
TestObserver - Class in eu.artemis.demanes.impl.SunSPOT.tests
+
 
+
TestObserver() - Constructor for class eu.artemis.demanes.impl.SunSPOT.tests.TestObserver
+
 
+
TestReasoner - Class in eu.artemis.demanes.impl.SunSPOT.tests
+
 
+
TestReasoner() - Constructor for class eu.artemis.demanes.impl.SunSPOT.tests.TestReasoner
+
 
+
TestReasoner(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.tests.TestReasoner
+
 
+
TestTriggerPolicy - Class in eu.artemis.demanes.impl.SunSPOT.tests
+
 
+
TestTriggerPolicy() - Constructor for class eu.artemis.demanes.impl.SunSPOT.tests.TestTriggerPolicy
+
 
+
toString() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Returns a string representation of this Level.
+
+
trigger() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
trigger(ANES_URN, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
trigger() - Method in class eu.artemis.demanes.impl.SunSPOT.tests.TestReasoner
+
 
+
trigger(ANES_URN, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.tests.TestReasoner
+
 
+
TRIGGER_INTERVAL_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
TriggerPolicyProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
TriggerPolicyProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
+ + + +

U

+
+
unregisterActuator(Actuator) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
unregisterObserver(Observer) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
unregisterTriggerable(Triggerable) - Method in class eu.artemis.demanes.impl.SunSPOT.tests.TestTriggerPolicy
+
 
+
unregisterTriggerable(Triggerable) - Method in class eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor
+
 
+
UPDATE_LIST_BEHAVIOUR_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.MediatorProperties
+
 
+
+ + + +

V

+
+
VAR_ID - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
VAR_KNORM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
VAR_MAX - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
VAR_MIN - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
VAR_PROP - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
VAR_TYPE - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
VAR_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
VAR_VALUE_NORM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
+ + + +

W

+
+
WARNING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
WARNING is a message level indicating a potential problem.
+
+
warning(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
+A B C D E F G I K L M N O P R S T U V W 
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/index-all.html.r409 b/doc/index-all.html.r409 new file mode 100644 index 0000000..d5bba8f --- /dev/null +++ b/doc/index-all.html.r409 @@ -0,0 +1,1469 @@ + + + + + +Index (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
A B C D E F G H I K L M N O P R S T U V W  + + +

A

+
+
activateStatusIndicator() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
ActuatorControl - Interface in eu.artemis.demanes.impl.SunSPOT.reconfiguration
+
 
+
addListener(CommunicationListener, int) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
addListener(OnDemandNeighborDiscoveryListener) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
+
Adds a listener for parsing new neigbor discovery messages.
+
+
addMessage(MarqueeMessage) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
addNeighbor(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Adds a neighbor to the table.
+
+
ALL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
ALL indicates that all messages should be logged.
+
+
+ + + +

B

+
+
BASIC_NEIGHBOR_DISCOVERY - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
BASIC_NEIGHBOR_DISCOVERY_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
BASIC_NEIGHBOR_DISCOVERY_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
BATTERY_LEVEL_OBSERVATION - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BATTERY_LEVEL_OBSERVATION_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BATTERY_LEVEL_OBSERVATION_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BATTERY_LEVEL_OBSERVATION_TEST - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BATTERY_LEVEL_OBSERVATION_TEST_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BATTERY_LEVEL_OBSERVATION_TEST_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
BatteryLevelObservation - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
BatteryLevelObservation(Properties, String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.BatteryLevelObservation
+
 
+
BL_EVENT - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.Events
+
 
+
BLINK_INTERVAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
blinkActivity1(LEDColor) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
blinkActivity2(LEDColor) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
BLObservationURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
BLObservationURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
BS_ADDRESS_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
Basestation address for Den Haag video.
+
+
BS_ADDRESSS_LONG - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
 
+
+ + + +

C

+
+
CallbackFunction(String, int, int, String, int, int) - Method in interface eu.artemis.demanes.impl.SunSPOT.communications.CommunicationListener
+
 
+
checkRequestID(long) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Checks the validity of a passed by request ID.
+
+
clearMarquee() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
clearTable() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Clears the neighbor table.
+
+
clone() - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
code - Variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
code - Variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
CommunicationListener - Interface in eu.artemis.demanes.impl.SunSPOT.communications
+
 
+
CommunicationManager - Class in eu.artemis.demanes.impl.SunSPOT.communications
+
 
+
CommunicationManager() - Constructor for class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
CONFIG - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
CONFIG is a message level for static configuration messages.
+
+
config(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
CONFIG_FILE - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_KEYNOTFOUND - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_KEYNUMBERS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_POINTS_COLUMN - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_POINTS_ROW_HEADER_NOTFOUND - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_POINTS_VALUE_NOTVALID - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_POINTS_VALUES_UNSORTED - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
CONFIG_FILE_VALUE_NOTVALID - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
containsKey(String) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
containsKey(String, Class) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
CR0_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.PTActionProperties
+
 
+
CR_MAX_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
CR_MIN_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
CREATED - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
+ + + +

D

+
+
deactivateStatusIndicator() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
DEBUG - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
DEBUG is a message level for debugging information.
+
+
debug(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
DEFAULT_HANDLER_INTERVAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Default interval for the internal incoming message handler.
+
+
DEFAULT_PORT - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Default port for neighbor discovery communications.
+
+
DefaultConfig - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
Class with the definition of basics keys for the configuration file + It also contains the description of the format for values
+
+
DefaultConfig() - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.DefaultConfig
+
 
+
defaultProp - Variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.DefaultConfig
+
 
+
DELIM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
DELTA_CR_KEY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
DELTA_CR_KEY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
DELTA_CR_MIN_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
DELTA_ND_MIN_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
DEMANESResources - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
DEMANESResources() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
denormVar() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
destroyApp(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
+
Called if the MIDlet is terminated by the system.
+
+
DIED - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
DISABLED - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
doNeighborDiscovery() - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryProtocol
+
 
+
doNeighborDiscovery() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+
 
+
doNeighborDiscovery() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+
 
+
doNeighborDiscovery() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Performs a new neighbor discovery requests.
+
+
doRequest() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Performs a neighbor request.
+
+
du_CR_ID_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
du_ND_ID_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
+ + + +

E

+
+
E_CR_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
e_E_ID_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
e_ND_ID_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
equals(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
equals(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Compare two objects for value equality.
+
+
equals(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
ERRORMSG - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
Class for error messages description
+
+
ERRORMSG() - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
ErrorPrint(String) - Static method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
eu.artemis.demanes.impl.SunSPOT - package eu.artemis.demanes.impl.SunSPOT
+
 
+
eu.artemis.demanes.impl.SunSPOT.common - package eu.artemis.demanes.impl.SunSPOT.common
+
 
+
eu.artemis.demanes.impl.SunSPOT.communications - package eu.artemis.demanes.impl.SunSPOT.communications
+
 
+
eu.artemis.demanes.impl.SunSPOT.datatypes - package eu.artemis.demanes.impl.SunSPOT.datatypes
+
 
+
eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner - package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration - package eu.artemis.demanes.impl.SunSPOT.reconfiguration
+
 
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions - package eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions
+
 
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations - package eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor - package eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor
+
 
+
eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee - package eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+
 
+
eu.artemis.demanes.impl.SunSPOT.utils.logging - package eu.artemis.demanes.impl.SunSPOT.utils.logging
+
 
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery - package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand - package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
 
+
eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu - package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu
+
 
+
evaluate() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
evaluate() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
Events - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
Events() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.Events
+
 
+
+ + + +

F

+
+
FDM_PRIM_CONFIG_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
FDM_SEC_CONFIG_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
FINE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
FINE is a message level providing tracing information.
+
+
fine(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
FINER - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
FINER indicates a fairly detailed tracing message.
+
+
finer(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
FINEST - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
FINEST indicates a highly detailed tracing message.
+
+
finest(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
FIRST_LED - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The first LED index for the LEDs array.
+
+
FuzzyDM - Interface in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
FuzzyDM + + This is an interface to a decision making function
+
+
+ + + +

G

+
+
get(String) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
get(String, Class) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
getActions() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions.PowerTransmissionActuator
+
+
Get the list of actions provided by this actuator.
+
+
getActions() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
getCommunicationManager() - Method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
getDestination() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
getExpiryTime() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Gets the current expiry time.
+
+
getInputsID() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
getInputsID() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getInputsSet() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
getInputsSet() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getInstance(String, Properties) - Static method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFactory
+
 
+
getInstance(ObservationType, Properties, String) - Static method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationFactory
+
 
+
getInstance(NeighborDiscoveryType) - Static method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NDPFactory
+
 
+
getLastErrorMSG() - Static method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
getLevel() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
getLogger() - Static method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
getMarquee() - Static method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
getMaximumPTX(int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
 
+
getMaximumPTXIndex(int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the maximum index in the available transmission + powers array.
+
+
getMessage() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
getMinimumPTX(int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
 
+
getMinimumPTXIndex(int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the minimum index in the available transmission + powers array.
+
+
getName() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Return the non-localized string name of the Level.
+
+
getName() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
getNeighborCount() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Gets the number of acive neighbors registered in the table.
+
+
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
getNeighborList() - Method in interface eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservationExtension
+
 
+
getNeighborList() - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryProtocol
+
 
+
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+
 
+
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+
 
+
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Get the list if active neighbors.
+
+
getNeighborList() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Retrives the list of active neighbors.
+
+
getNodeDegree() - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryProtocol
+
 
+
getNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+
 
+
getNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+
 
+
getNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Get the actual number of active neighbors (node degree).
+
+
getObservationID() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.BatteryLevelObservation
+
+
Gets the ID of an observation.
+
+
getObservationID() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
getObservations() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
getObservations() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
getOutput(String) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
getOutput(String) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getOutputsID() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
getOutputsID() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getOutputsSet() - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
getOutputsSet() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
getPort() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
+
Gets the port used in this listener.
+
+
getProp() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.DefaultConfig
+
 
+
getPTACT() - Method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
getPTX() - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the actual transmission power.
+
+
getPTXatIndex(int, int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the transmission power given an index.
+
+
getPTXIndex(int, int) - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the index of a given power of transmission + related to the REAL available ones.
+
+
getRadioChannel() - Static method in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
Static method to obtain the actual radio channel in use.
+
+
getRequestID() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
+
Get the request ID of the instanced PDU
+
+
getState() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
getType(String) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
getTypeOfPDU() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
+
Get the type of instanced PDU
+
+
getUpdatingInterval() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
getValue() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
getValue() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.BatteryLevelObservation
+
+
Get the batteries remaining capacity in mAh.
+
+
getValue() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
getValue(ANES_URN) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
getValueNorm() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
+ + + +

H

+
+
hashCode() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
hashCode() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Generate a hashcode.
+
+
hashCode() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
+ + + +

I

+
+
IEEE_ADDRESS - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The SunSPOT property name for its IEEE address, "spot.address".
+
+
IEEE_ADDRESS_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The SunSPOT IEEE Address.
+
+
IMPORTANCE_NORMAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
INFO - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
INFO is a message level for informational messages.
+
+
info(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
init() - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
Interp1DFuzzyDM - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
Interp1DFuzzyDM(String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
Interp1DFuzzyDM(InputStream) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
Interp1DFuzzyDM(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
intValue() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Get the integer value for this level.
+
+
invoke(ANES_URN, ANES_BUNDLE) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
isActive() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
+
Indicate whether this listener is active or not.
+
+
isActive() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Checks if the Neighbor Discovery Requester is alive.
+
+
isDebugActive() - Static method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
isRunning() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Indicate whether the neighbor discovery is running or not.
+
+
isUSBConnected() - Static method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
+ + + +

K

+
+
KCR_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
KdeltaND_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
KE_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
KEY - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
Class for keys and constants definition
+
+
KEY() - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
KND_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
KSI_ND_PROPERTY_NAME - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
+ + + +

L

+
+
LAST_LED - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The last LED index for the LEDs array.
+
+
Level - Class in eu.artemis.demanes.impl.SunSPOT.utils.logging
+
+
The Level class defines a set of standard logging levels that can be used to + control logging output.
+
+
Level(String, int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Create a named Level with a given integer value.
+
+
load(InputStream) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
+
Load Inference System from a storage device
+
+
load(Properties) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
load(InputStream) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
load(Properties) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
log(Level, String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
log(Level, ByteArrayOutputStream) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
LOG_DESTINATION - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The log destination property name, "log.destination".
+
+
LOG_DESTINATION_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The default log destination (STDOUT) for the whole application.
+
+
LOG_LEVEL - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The log level property name, "log.level".
+
+
LOG_LEVEL_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The default log level (ALL) for the whole application.
+
+
Logger - Class in eu.artemis.demanes.impl.SunSPOT.utils.logging
+
 
+
Logger() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
Protected method to construct a logger with a default configuration.
+
+
Logger(SystemContext) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger(String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger(byte) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger(String, byte) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
Logger(String, byte, Level) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
logNeighborInformation() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Logs neighbor information.
+
+
+ + + +

M

+
+
maintainNeighborTable() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Performs a maintenance check of the neighbor table, removing those + neighbors which their last alive update is greater than the expiry time.
+
+
Marquee - Class in eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+
+
Note: Although some parts should be considered to be accessed in a + synchronized way allowing different callers for the marquee, the actual usage + does not require it.
+
+
Marquee() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
Marquee(SystemContext) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
MarqueeAddMessageException - Exception in eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+
 
+
MarqueeAddMessageException() - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeAddMessageException
+
 
+
MarqueeAddMessageException(String) - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeAddMessageException
+
 
+
MarqueeMessage - Class in eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee
+
 
+
MarqueeMessage() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
MarqueeMessage(LEDColor[]) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
MAXIMUM_POWER_TRANSMISSION - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
The maximum power of transmission in dBm.
+
+
MediatorProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
MediatorProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.MediatorProperties
+
 
+
MESSAGE_LENGTH - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
MINIMUM_INTERVAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
+
Minimum interval time in milliseconds for rotating the messages in the + marquee
+
+
MINIMUM_POWER_TRANSMISSION - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
The minimum power of transmission in dBm.
+
+
MODE_ANYCAST - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
MODE_BROADCAST - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
MODE_MULTICAST - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
MODE_UNICAST - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
+ + + +

N

+
+
ND_EVENT - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.Events
+
 
+
ND_MIN_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
ND_R_PROPERTY_NAME - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
NDinitPROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
NDObservationURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
NDObservationURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
NDPDU_REQUEST - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
NDPDU_RESPONSE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
NDPDU_RESPONSE_ACK - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
 
+
NDPFactory - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
+
A NDPFactory is a factory method to provide a Neighbor Discovery Protocol + manager selected accordingly to the instance requested.
+
+
NDPFactory() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NDPFactory
+
 
+
NDRefPROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
NeighborDiscoveryException - Exception in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NeighborDiscoveryException(String) - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryException
+
 
+
NeighborDiscoveryFactoryException - Exception in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NeighborDiscoveryFactoryException(String) - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryFactoryException
+
 
+
NeighborDiscoveryPDU - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu
+
+
Neighbor Discovery PDU is a representation of a PDU for the Neighbor Discovery + Protocol.
+
+
NeighborDiscoveryPDU(byte, long) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
+
Public constructor.
+
+
NeighborDiscoveryPDUException - Exception in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu
+
+
An NeighborDiscoveryPDUException is thrown to indicate that an error occurred + during the generation or parsing of a NeighborDiscoveryPDU.
+
+
NeighborDiscoveryPDUException(String, String) - Constructor for exception eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDUException
+
 
+
NeighborDiscoveryProtocol - Interface in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NeighborDiscoveryType - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NeighborDiscoveryType(String, int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V1 - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V1_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V1_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V2 - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V2_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_MANAGER_V2_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
NODE_DEGREE_OBSERVATION - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_TEST - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_TEST_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NODE_DEGREE_OBSERVATION_TEST_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
NodeDegreeManagerV1 - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NodeDegreeManagerV1() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+
 
+
NodeDegreeManagerV2 - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery
+
 
+
NodeDegreeManagerV2() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+
 
+
NodeDegreeObservation - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
NodeDegreeObservation() - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
NodeDegreeObservation(Properties, String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
NodeDegreeObservationExtension - Interface in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
normVar() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
notify(Radiogram) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Notifies the parsing method that a new neighbor discovery message has + been received.
+
+
notify(Radiogram) - Method in interface eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryListener
+
 
+
notifyForward(long, long, long, long) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
NUMBER_OF_INPUTS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
NUMBER_OF_OUTPUTS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
NUMBER_OF_POINTS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
+ + + +

O

+
+
ObservationFactory - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
ObservationFactory() - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationFactory
+
 
+
ObservationType - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations
+
 
+
ObservationType(String, int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
OFF - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
OFF is a special level that can be used to turn off logging.
+
+
ON_DEMAND_NODE_DEGREE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
ON_DEMAND_NODE_DEGREE_CODE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
ON_DEMAND_NODE_DEGREE_STRING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
OnDemandNeighborDiscovery - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
+
OnDemandNeighborDiscovery implements a basic three-tiered protocol for doing + an on demand neighbor discovery.
+
+
OnDemandNeighborDiscovery() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
The main constructor for this class provides the basic functionality of + the three-tiered DEMANES/UPM Neighbor Discovery Protocol.
+
+
OnDemandNeighborDiscoveryCommunicationsListener - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
+
OnDemandNeighborDiscoveryCommunicationsListener executes a thread for + listening neighbor discovery requests from other neighbors.
+
+
OnDemandNeighborDiscoveryCommunicationsListener(int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
+
Creates a new OnDemandNeighborDiscoveryCommunicationsListener on port + port
+
+
OnDemandNeighborDiscoveryListener - Interface in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
+
OnDemandNeighborDiscoveryListener defines the interface used by the + listener of neighbor discovery requests issued by other motes.
+
+
OnDemandNeighborDiscoveryRequester - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
+
OnDemandNeighborDiscoveryRequester is used to manage the issue of a + neighbor discovery request.
+
+
OnDemandNeighborDiscoveryRequester(int) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Creates a new Neighbor Discovery Requester on port port.
+
+
OnDemandNeighborTableManager - Class in eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand
+
+
OnDemandNeighborTableMAnager implements the table used to store the active + neighbors detected by the Neighbor Discovery Protocol.
+
+
OnDemandNeighborTableManager() - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Creates a new instance of the neighbor table manager using the default + expiry time for new entries.
+
+
OnDemandNeighborTableManager(long) - Constructor for class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Creates a new instance of the neighbor table manager using the expiry + time especified by expiryTime.
+
+
ORAMediatorForSunSPOT - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration
+
 
+
ORAMediatorForSunSPOT() - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
ORAMediatorForSunSPOT(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
+ + + +

P

+
+
parsePDU(byte[]) - Static method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
+
Parse a byte array containing a Neighbor Discovery PDU.
+
+
pause() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
pauseApp() - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
POINTS_ARRAY - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
POINTS_ROW_DELIM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
PowerScalingController - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
+
+
PowerScalingController(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
PowerScalingControllerFactory - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
PowerScalingControllerFactory() - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFactory
+
 
+
PowerScalingControllerFuzzyLogic - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
PowerScalingControllerFuzzyLogic(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+
 
+
PowerScalingControllerInterp1FDM - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
+
This object class models the fuzzy logic controller that will make decisions + whenever trigger is called.
+
+
PowerScalingControllerInterp1FDM(Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+
 
+
PowerScalingMonitor - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor
+
 
+
PowerScalingMonitor(SystemContext, Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
PowerTransmissionActuator - Class in eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions
+
+
PowerTransmissionActuator
+
+
PowerTransmissionActuator(SystemContext, Properties) - Constructor for class eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions.PowerTransmissionActuator
+
 
+
PRIORITY_NORMAL - Static variable in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
PTActionProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
PTActionProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.PTActionProperties
+
 
+
PTActionURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
+
 
+
PTActionURN - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
put(String, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
put(String, String) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
+ + + +

R

+
+
RADIO_PROPERTIES_ERROR - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
+
ERROR CONSTANT.
+
+
RadioProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
RadioProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.RadioProperties
+
 
+
ReasonerProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
ReasonerProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
+
 
+
REASONING_FUNCTION - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
ReconfigurationResources - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
ReconfigurationResources() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
+
 
+
RECORD - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
RECORD indicates that the log is going to be stored in an internal + RecordStore.
+
+
registerActuator(Actuator) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
registerObserver(Observer) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
registerTriggerable(Triggerable) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
REMOTE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
REMOTE indicates that the log is going to be casted to a remote logging + facility.
+
+
removeListener(CommunicationListener) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
removeListener(OnDemandNeighborDiscoveryListener) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
+
Removes a listener
+
+
removeMessage(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
RERRReceived(long, long) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RERRSent(long, long) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
reset() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions.PowerTransmissionActuator
+
+
Reset the transmission power to the initial value.
+
+
reset() - Method in interface eu.artemis.demanes.impl.SunSPOT.reconfiguration.ActuatorControl
+
 
+
resolveDestination(String) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
resume() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
RoutingListener - Class in eu.artemis.demanes.impl.SunSPOT.communications
+
 
+
RoutingListener(SystemContext) - Constructor for class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RREPReceived(long, long, long, int, double) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RREPSent(long, long, int, double) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RREQReceived(long, long, long, int, double) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
RREQSent(long, long, int, double) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener
+
 
+
run() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
+
The run method is used to be executed as a separate thread, providing + a loop for listening for new neighbor discovery messages and parsing + them.
+
+
run() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Run method for being run as a thread.
+
+
+ + + +

S

+
+
send(ByteArrayOutputStream, int, int, String, int, int) - Method in class eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager
+
 
+
setActive(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
+
Set the active status for this listener.
+
+
setActive(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryRequester
+
+
Sets the active status of the Neighbor Discovery Requester.
+
+
setActuationProvider(ActionProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
setActuationProvider(ActionProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+
 
+
setActuationProvider(ActionProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+
 
+
setAll() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
setContext(SystemContext) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
setContext(SystemContext) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV1
+
 
+
setContext(SystemContext) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NodeDegreeManagerV2
+
 
+
setDestination(byte) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
setErrorMSG(String) - Static method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
setExpiryTime(long) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborTableManager
+
+
Sets a new expiry time.
+
+
setInput(String, Object) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
setInput(String, double) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
setInput(String, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
setInput(String, double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
setInterval(long) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
setKnorm(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setKnorm(double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setLevel(Level) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
setMessage(LEDColor[]) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
setMessageAtPosition(int, LEDColor) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage
+
 
+
setName(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
setNormFactors(Hashtable) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
setNormFactors(String, double) - Method in interface eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
+
 
+
setNormFactors(String, double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
setNormFactors(Hashtable) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM
+
 
+
setNumber(int) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setObservationProvider(ObservationProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
setObservationProvider(ObservationProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+
 
+
setObservationProvider(ObservationProvider) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+
 
+
setOff() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
setPort(int) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscoveryCommunicationsListener
+
+
Sets a new port for listening to neighbor requests.
+
+
setPTACT(PowerTransmissionActuator) - Method in class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
setReasoner(Reasoner) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
setRequestID(long) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
+
Set the request ID of the instanced PDU
+
+
setRunning(boolean) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Sets the neighbor discovery running state.
+
+
setState(int) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
setStatusIndicator(LEDColor) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
setTriggeringPolicy(TriggerPolicy) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
setTypeOfPDU(byte) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
+
Set the type of the instanced PDU
+
+
setUpdatingInterval(long) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
setValue(Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setValue(double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setValueNorm(Double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setValueNorm(double) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
setVarID(String) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
SEVERE - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
SEVERE is a message level indicating a serious failure.
+
+
severe(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
SPOT_URN_NSS - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The SunSPOT property name for the NSS part for construction any URN, "urn.nss.spotpart".
+
+
SPOT_URN_NSS_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
+
The default value for the NSS part for construction any URN, "SunSPOT" + last four bytes of IEEE address.
+
+
start() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
start() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
start() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
start() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Starts the neighbor discovery daemon.
+
+
startApp() - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
STARTED - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
STATUS_IS_NOT_READY - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
STATUS_IS_READY - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
STATUS_IS_STANDBY - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
stop() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
stop() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
stop() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery
+
+
Stops the neighbor discovery daemon.
+
+
SunSPOTBundle - Class in eu.artemis.demanes.impl.SunSPOT.datatypes
+
 
+
SunSPOTBundle() - Constructor for class eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle
+
 
+
SunSPOTPowerController - Class in eu.artemis.demanes.impl.SunSPOT
+
+
The startApp method of this class is called by the VM to start the + application.
+
+
SunSPOTPowerController() - Constructor for class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
suspend() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
SUSPENDED - Static variable in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
switchPressed(SwitchEvent) - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
switchReleased(SwitchEvent) - Method in class eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController
+
 
+
SYSTEM_ERROR - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
SYSTEM_ERROR indicates that the log is going to be done to System.err.
+
+
SYSTEM_OUTPUT - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
+
SYSTEM_OUTPUT indicates that the log is going to be done to System.out.
+
+
SystemContext - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
SystemContext() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.SystemContext
+
 
+
SystemProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
SystemProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
+
 
+
+ + + +

T

+
+
toByteArray(byte, long) - Static method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU
+
+
Creates a newly allocated byte array for a Neighbor Discovery PDU of type + typeOfPDU and request ID requestID.
+
+
toString() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.ObservationType
+
 
+
toString() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
Returns a string representation of this Level.
+
+
toString() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType
+
 
+
trigger() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
trigger(ANES_URN, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController
+
 
+
trigger() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+
 
+
trigger(ANES_URN, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFuzzyLogic
+
 
+
trigger() - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+
 
+
trigger(ANES_URN, Object) - Method in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerInterp1FDM
+
 
+
TRIGGER_INTERVAL_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
TriggerPolicyProperties - Class in eu.artemis.demanes.impl.SunSPOT.common
+
 
+
TriggerPolicyProperties() - Constructor for class eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
+
 
+
+ + + +

U

+
+
unpause() - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
unregisterActuator(Actuator) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
unregisterObserver(Observer) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT
+
 
+
unregisterTriggerable(Triggerable) - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor
+
 
+
UPDATE_LIST_BEHAVIOUR_PROPERTY - Static variable in class eu.artemis.demanes.impl.SunSPOT.common.MediatorProperties
+
 
+
updateMessage(Object, MarqueeMessage) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee
+
 
+
updateNodeDegree() - Method in class eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation
+
 
+
+ + + +

V

+
+
VAR_DELIM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_ID - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_KNORM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
VAR_MAX - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_MIN - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_NUMBER - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
VAR_TYPE - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_TYPE_IN - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_TYPE_OUT - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.KEY
+
 
+
VAR_VALUE - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
VAR_VALUE_NORM - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
Variable - Class in eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner
+
 
+
Variable(String) - Constructor for class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Variable
+
 
+
VARIABLE_ERROR_ACCESS - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
VARIABLE_ID_NOTFOUND - Static variable in class eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.ERRORMSG
+
 
+
+ + + +

W

+
+
WARNING - Static variable in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
+
+
WARNING is a message level indicating a potential problem.
+
+
warning(String) - Method in class eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
+
 
+
+A B C D E F G H I K L M N O P R S T U V W 
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/index.html b/doc/index.html new file mode 100644 index 0000000..96c3670 --- /dev/null +++ b/doc/index.html @@ -0,0 +1,78 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +Cargo Monitoring Pilot. DEMANES Project (1.0) + + + + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p> + + + diff --git a/doc/index.html.mine b/doc/index.html.mine new file mode 100644 index 0000000..3b6ae5d --- /dev/null +++ b/doc/index.html.mine @@ -0,0 +1,74 @@ + + + + + +Cargo Monitoring Pilot. DEMANES Project (1.0) + + + + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p> + + + diff --git a/doc/index.html.r390 b/doc/index.html.r390 new file mode 100644 index 0000000..2f4d063 --- /dev/null +++ b/doc/index.html.r390 @@ -0,0 +1,67 @@ + + + + + +Cargo Monitoring Pilot. DEMANES Project (1.0) + + + + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p> + + + diff --git a/doc/index.html.r409 b/doc/index.html.r409 new file mode 100644 index 0000000..4356636 --- /dev/null +++ b/doc/index.html.r409 @@ -0,0 +1,74 @@ + + + + + +Cargo Monitoring Pilot. DEMANES Project (1.0) + + + + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p> + + + diff --git a/doc/overview-frame.html b/doc/overview-frame.html new file mode 100644 index 0000000..22cac67 --- /dev/null +++ b/doc/overview-frame.html @@ -0,0 +1,43 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +Overview List (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + +

DEMANES Power Scaling -- SPOT-side
v1.0

+ + +

 

+ + diff --git a/doc/overview-frame.html.mine b/doc/overview-frame.html.mine new file mode 100644 index 0000000..cb81058 --- /dev/null +++ b/doc/overview-frame.html.mine @@ -0,0 +1,35 @@ + + + + + +Overview List (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

DEMANES Power Scaling -- SPOT-side
v1.0

+ + +

 

+ + diff --git a/doc/overview-frame.html.r390 b/doc/overview-frame.html.r390 new file mode 100644 index 0000000..5705807 --- /dev/null +++ b/doc/overview-frame.html.r390 @@ -0,0 +1,28 @@ + + + + + +Overview List (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + +

DEMANES Power Scaling -- SPOT-side
v1.0

+ + +

 

+ + diff --git a/doc/overview-frame.html.r409 b/doc/overview-frame.html.r409 new file mode 100644 index 0000000..5b8579c --- /dev/null +++ b/doc/overview-frame.html.r409 @@ -0,0 +1,35 @@ + + + + + +Overview List (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + +

DEMANES Power Scaling -- SPOT-side
v1.0

+ + +

 

+ + diff --git a/doc/overview-summary.html b/doc/overview-summary.html new file mode 100644 index 0000000..3a3800e --- /dev/null +++ b/doc/overview-summary.html @@ -0,0 +1,198 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +Overview (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Cargo Monitoring Pilot. DEMANES Project (1.0)

+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/overview-summary.html.mine b/doc/overview-summary.html.mine new file mode 100644 index 0000000..679a276 --- /dev/null +++ b/doc/overview-summary.html.mine @@ -0,0 +1,190 @@ + + + + + +Overview (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Cargo Monitoring Pilot. DEMANES Project (1.0)

+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/overview-summary.html.r390 b/doc/overview-summary.html.r390 new file mode 100644 index 0000000..8dd8052 --- /dev/null +++ b/doc/overview-summary.html.r390 @@ -0,0 +1,157 @@ + + + + + +Overview (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Cargo Monitoring Pilot. DEMANES Project (1.0)

+
+ + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/overview-summary.html.r409 b/doc/overview-summary.html.r409 new file mode 100644 index 0000000..0d07bea --- /dev/null +++ b/doc/overview-summary.html.r409 @@ -0,0 +1,190 @@ + + + + + +Overview (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Cargo Monitoring Pilot. DEMANES Project (1.0)

+
+ + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/overview-tree.html b/doc/overview-tree.html new file mode 100644 index 0000000..5375864 --- /dev/null +++ b/doc/overview-tree.html @@ -0,0 +1,264 @@ + + + + +<<<<<<< .mine + +======= + +>>>>>>> .r409 +Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) +<<<<<<< .mine + +======= + +>>>>>>> .r409 + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+

Class Hierarchy

+
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/overview-tree.html.mine b/doc/overview-tree.html.mine new file mode 100644 index 0000000..2e5a22f --- /dev/null +++ b/doc/overview-tree.html.mine @@ -0,0 +1,218 @@ + + + + + +Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+

Class Hierarchy

+ +

Interface Hierarchy

+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/overview-tree.html.r390 b/doc/overview-tree.html.r390 new file mode 100644 index 0000000..3616386 --- /dev/null +++ b/doc/overview-tree.html.r390 @@ -0,0 +1,168 @@ + + + + + +Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources
    • +
    • eu.artemis.demanes.impl.SunSPOT.common.Events
    • +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FDM1 (implements eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM)
    • +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.Interp1DFuzzyDM (implements eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM)
    • +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Level
    • +
    • eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger
    • +
    • eu.artemis.demanes.impl.SunSPOT.common.MediatorProperties
    • +
    • javax.microedition.midlet.MIDlet + +
    • +
    • eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.NDObservation (implements eu.artemis.demanes.reconfiguration.Observation)
    • +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT (implements eu.artemis.demanes.reconfiguration.ActionProvider, eu.artemis.demanes.reconfiguration.ObservationProvider, eu.artemis.demanes.reconfiguration.ORAMediator)
    • +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingController (implements eu.artemis.demanes.reconfiguration.Reasoner)
    • +
    • eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.PowerScalingMonitor (implements eu.artemis.demanes.reconfiguration.Observer, eu.artemis.demanes.reconfiguration.TriggerPolicy)
    • +
    • eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerTransmissionActuator (implements eu.artemis.demanes.reconfiguration.Actuator)
    • +
    • eu.artemis.demanes.impl.SunSPOT.common.PTActionProperties
    • +
    • eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties
    • +
    • eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationResources
    • +
    • eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle (implements eu.artemis.demanes.datatypes.ANES_BUNDLE)
    • +
    • eu.artemis.demanes.impl.SunSPOT.common.SystemProperties
    • +
    • eu.artemis.demanes.impl.SunSPOT.tests.TestController
    • +
    • eu.artemis.demanes.impl.SunSPOT.TriggerPolicy.TestControllerOuput
    • +
    • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.TestFuzzyDM (implements eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM)
    • +
    • eu.artemis.demanes.impl.SunSPOT.tests.TestObserver (implements eu.artemis.demanes.reconfiguration.Observer)
    • +
    • eu.artemis.demanes.impl.SunSPOT.tests.TestReasoner (implements eu.artemis.demanes.reconfiguration.Reasoner)
    • +
    • eu.artemis.demanes.impl.SunSPOT.tests.TestTriggerPolicy (implements eu.artemis.demanes.reconfiguration.TriggerPolicy)
    • +
    • eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties
    • +
    +
  • +
+

Interface Hierarchy

+
    +
  • eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.FuzzyDM
  • +
+
+ +
+ + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/overview-tree.html.r409 b/doc/overview-tree.html.r409 new file mode 100644 index 0000000..9aff53d --- /dev/null +++ b/doc/overview-tree.html.r409 @@ -0,0 +1,217 @@ + + + + + +Class Hierarchy (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + +
+

Class Hierarchy

+ +

Interface Hierarchy

+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/package-list b/doc/package-list new file mode 100644 index 0000000..b619566 --- /dev/null +++ b/doc/package-list @@ -0,0 +1,14 @@ +eu.artemis.demanes.impl.SunSPOT +eu.artemis.demanes.impl.SunSPOT.common +eu.artemis.demanes.impl.SunSPOT.communications +eu.artemis.demanes.impl.SunSPOT.datatypes +eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner +eu.artemis.demanes.impl.SunSPOT.reconfiguration +eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor +eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions +eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations +eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee +eu.artemis.demanes.impl.SunSPOT.utils.logging +eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery +eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand +eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu diff --git a/doc/resources/background.gif b/doc/resources/background.gif new file mode 100644 index 0000000000000000000000000000000000000000..f471940fde2f39ef8943a6af9569bcf986b1579b GIT binary patch literal 2313 zcmV+k3HJ6!Nk%w1VKM-40OkMy00030|NlK(aXwsfKV5S}VtGJbbVOr%L0@%CZH88Q zl{{NzcR^uxNo<2iYk@pjY)*5FJz8x~bc{)B zfk z+1T6M-s9WdW8dcJ-wO*3@9+W*5AY543-j^$^!EPz_4eHZ2#>)41`h@dc!2OAgN6$a zCS2I?;lqgx6IR4nkpTe;1RN0f=zxMq2O=q`94V5d$&e>Unta)^<;;^G3>e7yp=ZvW z6DIW3xpSvaogXF?_4%`@(V;s}NR^5J!3hrtJV@1QRV&r5S*L!zYE|rss${iFkg&!? zTN5V#)~=bmMorwgZsEpdOE)iExo+FO-8;8Kga{=HbSQCnF=E6W3?o*|ID%uwi5**> zJXy127Y9m+=HQ|PhXWi+xNwoWv}n_%Pq%(e+H~mGqhq5kv4Mo|-n~g|7!F*xZ{xv< zCpXS~dGg^IGK?4@J-T%b(XnUHFul6n<@2&4)zzyO2) z3Q8`i0+UKY*`$}e9mmp;tg*))`|PsK1|hAo%u0K$vDwm4gaSkm0j{`26k#qAKmbuhxZ#cquDR>B zD{s8+&TH-uNg$C#68QG}1HMBHfrP&L@@w$F_!itRzXdCN@V|LDAu%3!IDtq1#1UV7 z#1RxvT=B(DWbCoU5l=ia$Pp`Hgb_?Mp@hmtxZDI2N-)v#$}PXVvdm1d>@v(v`0TUJ zF)Pu89(q`zv=w^nVTIF3@3BYIPA}c`(@ZCAwbNBEt@PDUKe5CTR8aB66IE1!w%Amt zy+jpcn~k>GZpVFg+H6x{_uOksvBlq0OyT$6TyQZ37k(cOxZr|JEx1sGm<(M9gH z-~PMqyn|tT=))UN`|-FFFUA#KToK0fUOaz=7}Z~KeHhVC&%O27cTfHQ^WBU8z4p&T zp#>D|V}XShTD;Hx745Iz{`>K-Z$A|7!*Boo{mY;G21vjH8t{M!OrQc6$iN0V@PQDF zpadsK!3tXNf*8!81~qnXWuHZ)kytd=_y+ADWvw31ouV;CdZ#ya*(l7-A-C-Y^+iit8O zBy3*`Ls$|5Hn4m_^I^|C7{m7EFn|5vTk;|oywIgCc9Bb*=L+Y$)M>9GC<|HGs@6NB zHLY%03!dDf=eDRt2O6lVSFRcsuWZEwU?=z$CZ0W?#VJfdN>HG(l%oKpyiftJc|Y)xkjSJYCrQal-0PC~()T9xwF!Jf zVi1UA#3BBbh(i8r5&v#Pz!cF41KjbCc?4u2@@Q~oKLirt2TM30;y6b+zyX2`Yl9u; z`0$3;v0-YUp&7NdPT#q`cZlbij$jvbRk6R>8g*>}*b9E+WDwmpHAAxYzyT aU_pX{M6b8i>#Dq3onfZy}_nli%!Q$ZV%e&!tN2 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 YpWXKgmku8Vj|K)Vje`mzEKCg608Q#dYybcN literal 0 HcmV?d00001 diff --git a/doc/script.js b/doc/script.js new file mode 100644 index 0000000..b346356 --- /dev/null +++ b/doc/script.js @@ -0,0 +1,30 @@ +function show(type) +{ + count = 0; + for (var key in methods) { + var row = document.getElementById(key); + if ((methods[key] & type) != 0) { + row.style.display = ''; + row.className = (count++ % 2) ? rowColor : altColor; + } + else + row.style.display = 'none'; + } + updateTabs(type); +} + +function updateTabs(type) +{ + for (var value in tabs) { + var sNode = document.getElementById(tabs[value][0]); + var spanNode = sNode.firstChild; + if (value == type) { + sNode.className = activeTableTab; + spanNode.innerHTML = tabs[value][1]; + } + else { + sNode.className = tableTab; + spanNode.innerHTML = "" + tabs[value][1] + ""; + } + } +} diff --git a/doc/serialized-form.html b/doc/serialized-form.html new file mode 100644 index 0000000..6f374ca --- /dev/null +++ b/doc/serialized-form.html @@ -0,0 +1,184 @@ + + + + + +Serialized Form (Cargo Monitoring Pilot. DEMANES Project (1.0)) + + + + + + + + +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + +
+

Serialized Form

+
+
+ +
+ +
+ + + + + + + +
DEMANES Power Scaling -- SPOT-side
v1.0
+
+ + + + diff --git a/doc/stylesheet.css b/doc/stylesheet.css new file mode 100644 index 0000000..cebb4fd --- /dev/null +++ b/doc/stylesheet.css @@ -0,0 +1,574 @@ +/* Javadoc style sheet */ +/* +Overall document style +*/ + +@import url('resources/fonts/dejavu.css'); + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a:hover, a:focus { + text-decoration:none; + color:#bb7a2a; +} +a:active { + text-decoration:none; + color:#4A6782; +} +a[name] { + color:#353833; +} +a[name]:hover { + text-decoration:none; + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; + font-style:italic; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +table tr td dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +/* +Document title and Copyright styles +*/ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:11px; + z-index:200; + margin-top:-9px; +} +.legalCopy { + margin-left:.5em; +} +.bar a, .bar a:link, .bar a:visited, .bar a:active { + color:#FFFFFF; + text-decoration:none; +} +.bar a:hover, .bar a:focus { + color:#bb7a2a; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* +Navigation bar styles +*/ +.bar { + background-color:#4D7A97; + color:#FFFFFF; + padding:.8em .5em .4em .8em; + height:auto;/*height:1.8em;*/ + font-size:11px; + margin:0; +} +.topNav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.bottomNav { + margin-top:10px; + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.subNav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +ul.subNavList li{ + list-style:none; + float:left; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.navBarCell1Rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skipNav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* +Page header and footer styles +*/ +.header, .footer { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.indexHeader { + margin:10px; + position:relative; +} +.indexHeader span{ + margin-right:15px; +} +.indexHeader h1 { + font-size:13px; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.footer ul { + margin:20px 0 5px 0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* +Heading styles +*/ +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList ul.blockList li.blockList h3 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList li.blockList h3 { + padding:0; + margin:15px 0; +} +ul.blockList li.blockList h2 { + padding:0px 0 20px 0; +} +/* +Page layout container styles +*/ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.indexContainer { + margin:10px; + position:relative; + font-size:12px; +} +.indexContainer h2 { + font-size:13px; + padding:0 0 3px 0; +} +.indexContainer ul { + margin:0; + padding:0; +} +.indexContainer ul li { + list-style:none; + padding-top:2px; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:5px 0 10px 0px; + font-size:14px; + font-family:'DejaVu Sans Mono',monospace; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* +List styles +*/ +ul.horizontal li { + display:inline; + font-size:0.9em; +} +ul.inheritance { + margin:0; + padding:0; +} +ul.inheritance li { + display:inline; + list-style:none; +} +ul.inheritance li ul.inheritance { + margin-left:15px; + padding-left:15px; + padding-top:1px; +} +ul.blockList, ul.blockListLast { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList, ul.blockListLast li.blockList { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { + padding:0px 20px 5px 10px; + border:1px solid #ededed; + background-color:#f8f8f8; +} +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { + margin-left:0; + padding-left:0; + padding-bottom:15px; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { + list-style:none; + border-bottom:none; + padding-bottom:0; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* +Table styles +*/ +.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { + width:100%; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.overviewSummary, .memberSummary { + padding:0px; +} +.overviewSummary caption, .memberSummary caption, .typeSummary caption, +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, +.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, +.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +.memberSummary caption span.activeTableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#F8981D; + height:16px; +} +.memberSummary caption span.tableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#4D7A97; + height:16px; +} +.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { + padding-top:0px; + padding-left:0px; + padding-right:0px; + background-image:none; + float:none; + display:inline; +} +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { + display:none; + width:5px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .activeTableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .tableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + background-color:#4D7A97; + float:left; + +} +.overviewSummary td, .memberSummary td, .typeSummary td, +.useSummary td, .constantsSummary td, .deprecatedSummary td { + text-align:left; + padding:0px 0px 12px 10px; + width:100%; +} +th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, +td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ + vertical-align:top; + padding-right:0px; + padding-top:8px; + padding-bottom:3px; +} +th.colFirst, th.colLast, th.colOne, .constantsSummary th { + background:#dee3e9; + text-align:left; + padding:8px 3px 3px 7px; +} +td.colFirst, th.colFirst { + white-space:nowrap; + font-size:13px; +} +td.colLast, th.colLast { + font-size:13px; +} +td.colOne, th.colOne { + font-size:13px; +} +.overviewSummary td.colFirst, .overviewSummary th.colFirst, +.overviewSummary td.colOne, .overviewSummary th.colOne, +.memberSummary td.colFirst, .memberSummary th.colFirst, +.memberSummary td.colOne, .memberSummary th.colOne, +.typeSummary td.colFirst{ + width:25%; + vertical-align:top; +} +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { + font-weight:bold; +} +.tableSubHeadingColor { + background-color:#EEEEFF; +} +.altColor { + background-color:#FFFFFF; +} +.rowColor { + background-color:#EEEEEF; +} +/* +Content styles +*/ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +.docSummary { + padding:0; +} + +ul.blockList ul.blockList ul.blockList li.blockList h3 { + font-style:normal; +} + +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} + +td.colLast div { + padding-top:0px; +} + + +td.colLast a { + padding-bottom:3px; +} +/* +Formatting effect styles +*/ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:3px 10px 2px 0px; + color:#474747; +} +.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, +.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, +.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { + font-weight:bold; +} +.deprecationComment, .emphasizedPhrase, .interfaceName { + font-style:italic; +} + +div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, +div.block div.block span.interfaceName { + font-style:normal; +} + +div.contentContainer ul.blockList li.blockList h2{ + padding-bottom:0px; +} diff --git a/j2meclasses/eu/artemis/demanes/datatypes/ANES_BUNDLE.class b/j2meclasses/eu/artemis/demanes/datatypes/ANES_BUNDLE.class new file mode 100644 index 0000000000000000000000000000000000000000..b4d902b42ad6dde68c64c1de4f6d861f3489bd1c GIT binary patch literal 686 zcma)(OHaZ;6ot=~#~}E?2kIYCX`*&vj0;vi>PCWzs0%k{EE7^vrpQbU{52Q;0DqM6 z@(4E47`o`0+?+G#_UqU8$0ss4#-6~oK!uR=!$>Q_QPrud*p+>&x`A<9sw=f(l~&qe zk53m3ulaKM*to8HHA2acw3UH2w`xeJRO=o2F5OV-w%fG*K(}koGvOd*o^W1;(wMO^ z(^fX!?j-zouN~!EZZCQRU-fJdX(O;hIA5q|{w9H4g5d54{zSrl$~DRU$-ab4FXn9z zQ{3|v&J(ZOjN-npZi0|Y$_bDsBWi@|qTo6G%XvbBaF&u*Gd^x3(%v92R%y%sY6gyQ z`hRYOq;;>}VrA?sl_wCEFnUCmK_CmT=8&JN7;6E`>?^V>%UWVb0V~rHfg%OkU|v@ikC{8QUVI7v~uZ9f@zDrK|!tCben8RcEe@^<;`bb zb;iLLM`s*g7zbxGosk*GXa6Y2^V{8oZQ9QCA>aKw=lp)Z^KJh9@2|fR#VDS}aVrUh zY!bKeX#zRvXOlRExehMR$8jf#1m+U>O!|cc7NuX3W6N@EMVh+;aZlD(rMaKL1L;4P z<_l@Qlx9tuuM*JXSWn_4@^Ne^bWTmr-kh6WT${^IDWq~+`eQv)(yc;f(REC#Fs9Ho zXB*UvF;^?E8_trxUgAnBXXo|Oitd;)4;EvtvF%dM z^mg8;xF&VRv8fO@tJG>Tykq-`xlgs@re(U<4mhwv9d6OADx5vE@U#0c?UM*XM=enn zwW`GL$lK+L?ifq9LVDeZs3 z=jf1tb#UR1?&xLWafP>;!Rd0veacZ;ck@MqJMoI{x`x#H=+N-q(1`2WzG)QNTzh#T zr!dTu3^7x!S($3Zb~A?8Rt(3i6b(l&Wo%c^@F+{4T(oOW-k33^++7V%oEJwb3?9lr z8qOmVM?pgo6EruSc{Q+`1{0&Qzop@A3@G%sT79CnxoJ2oz1-695G4i0!6YU$Tt-=g z1zW=h_%K+j2;dmTdF;A|M{>f!xP~fRnbtHs#uEiT&cQ?Fz*Dc#`%0K!GNwKVLLqag zJghYz#4fl-bvj);XFoBVNxjNcC;7M?w|dufi(dI@(RRI3F)X_D+&-?}TYEoqEa5IQ z1|JYHSfXIKlO2z8GC6Uu|SL`Z>3rt65NVs*4V=PZI(SXV<>$pA~qn+U|ru#b2MJ7`aj{E7JQ zO@wX=1#XcyOV-;SQony17jTh#WcD!msp8nzC+P15`W_NNFa{ZBd-^33t2^jOCF|%M z;V-4JImcfeUHcF(5O9%sTk?p{_&`nKLFQ3%PjFn~ND^@wR|4W2L0DS)55!0KtE0O$ zH4j1oX-!=D7F;BXl4l*D*#X)B)7(SlJ$3XxL(0Sc2da)Eb)=q0g&^wX-p^c~h2Nl6 zHbX=MO`-vOgsUXj=B;k_rx1xl#XW2BKNI5tx#Uv9ObA^aeXU_w9=h+AM1ZdFF|Gyo z?|G>K`s9AudlNI zhXW|S4pH>BP%sNVMNf$0M$_z5d>&#|k0KTwiLw&?b-dP^kZ(fiZcy+RZhC%E^vwjN z%1f-E%@aN9i;jvj+n(XHmnn|>y@4jnBznD$<1bPtVfR?ejDr@H`rx(Ap1{b|C#u|9FCp;TtVy^_ENAmiLvzy^jiq6t?8*LOb3^* eFavT~dx?{)0(zpFvD9BeDXhJGzgsl literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/datatypes/ANES_URN_Exception.class b/j2meclasses/eu/artemis/demanes/datatypes/ANES_URN_Exception.class new file mode 100644 index 0000000000000000000000000000000000000000..761491067d18577a42103afc7bdb5caef2d3112c GIT binary patch literal 479 zcmb7B%T5A85Uhp;6!8V3H;sBhjBboa42dy#+Her%N(PwVnB7^j%o_bHPb41v06)su z4MY<;Ifs7KR99DKKEK{Ski{9QMR?ejP%fZSzz!jQWvp>cLbi6&C3rXSP!l!-V|6=? z`Z~E+{g9Dz5D!$?Rf&;)0ebGyOb8c&PJNX)9hr$g)RD59vvSJ4j=8#Sw>rItyLPYj zGSFjZV%s28Yr&IxR(`1L$nUts*il0a&}`Sz6`|OP(`2A;jkwuc);yP)5^~5(C=vXB znj%zw*Zx?=A-|jlIT?`1b1ZOo$(cCk>Qm6$?0SV`k!ip_j~rl?tJ0jr_!@U2AczPw knJL_S{d9`VUxg!P9?ukZ=d6VS^RbQ%*5F^_=?u2M0T@hUg#Z8m literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/exceptions/ActionInvocationException.class b/j2meclasses/eu/artemis/demanes/exceptions/ActionInvocationException.class new file mode 100644 index 0000000000000000000000000000000000000000..cfc0a864a748a7082852bb00165b03d8a93e9125 GIT binary patch literal 907 zcma)5U2hUW6g{_4KuWFBQnlK;wbeqQ<&1LmfNx~wB#(TurCK(-Kkd_&-NbGE42f0D9Syd_si86z8qNQsT7)o z_)gH4gt?m1vL5zZ(mWQe9#68hz-LKnC57`I(DB;1H%l|ONr)_3^3`j8=9HK8QL zLZb;AQ3w&b*$CE>i#VW%Ta24|7y8>t!- z81JadV4h;>&z1JZklvB9U5|Bp85FSTLXm}~GbmxpeZEb&9&r!<;|O7XBI}n=Y*XId zPC^U@Qnv}E{BIVF)mI89M&koj{#bw5I*`8o*LunZV@$$A{v<2|=A!tUScQAX;0L{g z3}!i>=57jeToD_Sj{fA<1ck)G6K^~Ig75mH#MwkClBHajxpSB~b7q)dzrX!J4iC^MV$B9&y@ZX_UrWvP)ZDOf2~H84 zMcgDT#xhbO=*cKnp+0Es5$HK#emB&y5!&=bkjT09ubFnwq@dp z$jG6Jy@4DGE!hhr%%>6mb~^jrcL%RJ&3ccJ-wg+nu+Uaoc9LOVMz2LbV5HIxeeNz; z1IK^Cyg61e;c-?2dFsoNVX3j#((+WrMryO;r$}qBNwCy_u$5JrA&p>n!zA+MGnI;| z%`!eb5g!DhnmR8K`pD~=Na>@e$>E`l%2>cH!bT@_#6*I_X(~uZaXu<@?5KfL#%
0HD9za%Un$?v=E^R%hdW_<>ls^@L}m;R!E zB7JjFddY-SPQtP~OUr~SS^az1M2U|Me0^)MahZLYBMbBVU-;rUY0)5!nCD04P{7#@FBedxVKbCXvx8o0krB5FTxyMQ?^Mp`y zn=Fm!~)t3EbGN6D-vyY^9Z_=p)$e zAP#%-xk?mm{)P6zK%5FfIdPsZ^s(1Aq0-0C;-e!O7O{X^gi0%Lf|(eHbCsV==Dbzr z#8G{xh}*c6n7c)6!A-!^ISDK7MOr3YP3zx51qD7t@I`LG#%1Zj2>D+i_uZmU7`tZm;^s1Ue%$d%1O9 zTc7HzV~5`#148}4SmTcfwe^jZ5ccvh6Iugf`MjJAxwzEBOq9+bABn9NbK&1& z=x>Z8>8(ogx!B75xO%Em1%pee)F-0Ku!k`RuCeRS{D`|mX2n5g7c!NiUZN+Gw7)r YNd)U618p<~ld6xffR-@%2EhP}UrdH;6951J literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/exceptions/MissingArgumentAnnotationException.class b/j2meclasses/eu/artemis/demanes/exceptions/MissingArgumentAnnotationException.class new file mode 100644 index 0000000000000000000000000000000000000000..ee966ae9d9f90aae004eb5478429b4317d9b7260 GIT binary patch literal 644 zcmbu6zfJ-{5XQej{smA#1<}q5#K;vE78(MgCK|Nx5B&lwtl{>|?Vb8EK7JF_1Ue%u zwmfYDp@WVXg);W=@hlpjdr3n4Kxq}!2@9324k6m|`jU`sD=jZVw=4Z?(H(JRx$X5B zD;UoCtQZZ3$`B6QGIWF=NLLxBFI}OfapY4^-UmE`an6-7N)MX;Aatb;np%5-uvf=F zo_#{8(!LW9!WjuYaIS~G_h=jK+o6d27yi5@q^`Ws@5vKohb+(URI^PoNFi+{PiXvi z_PK~l+4JBs0AT|$#5pE7iy+B|cSM>s! CU7$e# literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/exceptions/NonExistentKeyException.class b/j2meclasses/eu/artemis/demanes/exceptions/NonExistentKeyException.class new file mode 100644 index 0000000000000000000000000000000000000000..4f99e4eb7109892c2f838f7996647a9f14660fb5 GIT binary patch literal 697 zcmbVK%}yIZ4E~&iBy58S;io`DS^fi*?g{k})B}`CZBs6kNIgyx0|T4cXm_@P$KX+V z0jZVx0DTf3fHT6I@FO+trH8S{9)JF9kAL6(_=Pk!P|0E10pUd+F0MZZn>W|9gzT0!+P)=>S86Bf zoAP{Rj=X&vYI9UwtrIdkL5m5)HEnn=ZZ|mmq8h$`!B(cKN;lR~X#_7O^B0t~PEXHZ7kESjI{cUnFe)S2u*w zrz#$Mlol(=T(hdvVbdbK`rF|9`tQ{*1IpW=_dA5K%4%O+6?4eTLO?cS8V;U`E{K)F zklf@SQ4~2Mo&(vcl<1kYpP;W-NR`r;$gImL4T!iz_6oW0U1&+9(+!?P8B-V)d!h%% S7{f;I;4Ko$(t{Y3!!)=KIT+bIx~W_v??(Ul7GE+ypjKV0e&(WAmmB50l8HFpDkQ zP?*J|1Rf`_&9LALEqT8wv@bn%a`cRWy)eW|25 zU^vXzMBs95#6bFPM+~?Ul)2&N{gA3B^=jkI$;*1VcE(5C?Q?bNR^PS7&=60#&}4{J zypCX)uSq59!JsAdE8gnUBvbR+B#DzS>VFSorYC)dgD_U{2iJFxTXfKfTaqI+A{<*y zc^RUCRt(!=Fd^c}4HA?My@4Us@B-Zy&!ttJyP0~=+Q6_fb)#XlRHsjaZdd3u7LjKt zR<-uDbKWCFN0R=xwBcL4vqU$JCzNV#xrG`X$(&-!ueOtj5S>q+BHFd3Hf*I@}T8^+(nChW%z z`pVak#vJ9_)I~5)6(e^t6qjhyrGF(#d8>E{_WA;mOmvLc&KNV9I2ENa5|qYBUf|ZJ qUkJ+-Q-lPpBZm!Ssd6S5Siv3Y2o0;aOANMJ!#&z&xKCXK>pubY$^8ic literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/exceptions/ParameterizationAccessorException.class b/j2meclasses/eu/artemis/demanes/exceptions/ParameterizationAccessorException.class new file mode 100644 index 0000000000000000000000000000000000000000..42107b4f15090d543c6558176827fae1b509f794 GIT binary patch literal 1196 zcmbu8-EI;=6vzL=M|VYR8!QM`WzkysvU^p%z_iv{6AhXstt7^)=`z3?*u~jhYkUab z#ha4U#9I?z#W(Q6cxG7$wj_=5f|;E&=lte>KKSwb^c&*14^u}eg%oaUxRWBwnvT0_ zUsuaLbyL<*(NJYrY>N&L`u6!<=w4H8);mWS-cs_Uh7Vih- zwCo9K^L|T6&vu>H&z~}|7s;Q$)=q2R-+yLUcw{@azr_$QS6U2-UAIk9OHJDmuY$pm zkca%JA3o+JJ*9DKMVUiGXmG=6D+BZ}a7>avRy3#oA3CG}Je$)?RILUk?jSLD5xw9>M5_CF3s@tm!r3)aY zlSU2oG!0G&TxHn)&(bqI{5Qh1X*4^0I22Bsp*~y9XcQ|ml^>hNsZy_X-yK^RR?6r7 z8YtlsO+FCAbzDXoG}hsX(RmR|)AKSC^i8Fsb%i`ODT2|iRWoda*q1OUOKXZQfFc%P zAV*&cNp84?Jnafmh!Feqzf->X>Q}_yjF8AAPq0v<-wCui%nC88Au~6QiI@ literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/exceptions/ParameterizationException.class b/j2meclasses/eu/artemis/demanes/exceptions/ParameterizationException.class new file mode 100644 index 0000000000000000000000000000000000000000..5e678854901bff921ce933925ca99cbf5bb4f13b GIT binary patch literal 1046 zcmbW0+int36o&uBX<(#UX`!`RXgyFEXeZGNW2jBEYN8>=q?N=AFLq&u@6FJ9-qEy5sJ0;8}U|{17Y{g1K+jmeoGnA zhSKvyKkR%?KrrT%#XyHAuJcYA4O!`~2s|bg=PC%RaoFFb`hgR;UHQaPGbsP_AUn!p z9*elFmK8$jtmlWp@v(ICsKekJ(KR&kXkwdi_djPxSo+grHc`G%F&as`M`*@RbvoJD z1g5E}FTRKvZ8icz)_0~l!g8&CuDXRyhDFBO5M2VvUtVDo4Rw`}AXiSheOQ>?qR!AsKRS|*pSj81) zDAroU68w)zGOJ>ILGslEsm2)TLWY;-7#fE$vU8f;Mw!o{Y;H`;XH61a literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/exceptions/ParameterizationLinkException.class b/j2meclasses/eu/artemis/demanes/exceptions/ParameterizationLinkException.class new file mode 100644 index 0000000000000000000000000000000000000000..abe060db9300c609826875dc032d2105c0da526e GIT binary patch literal 1225 zcmbu8+iuf95QhKF$;O1X3Qb5TP`8|NqP}UwMQDX6R00)L)Dj7CwMjOq+r*CSHB>wd z55OHajRX=8fW!;%Fo;>(jY1nC0TegtQat`s^O+VmRmY* ztND%^?y8-#hKhzN!(3PNcrcL9h41seV94zp^0(X?aHntWNzZorO@>QbuH#GY$QB<2 zX#8 z9tFLg@YL>QhQ_~;jVx-YXQ{KoLzWnt|8X}A_x~<>a;wx>d^8eHm!Upg?zm4YQ&$t2 zqSUDwbm>MGhQ;!Ezb002fu04Bz*SsC7S!|MiqU!w^ON-gQuI%yq;Ziv8Wh23)~Y!+ zM&eT#l&8_44d4bcSVn>V6q4L<1x1<_q7)-`=}{`*V)YA>ug6H`(kIB&=sSTngIOj< zC1e(&xR^-<606Qp^re{ohUiJ6muAuHW9VlkuM?&b;>{><}bXSAKd@| literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/exceptions/ParameterizationURNException.class b/j2meclasses/eu/artemis/demanes/exceptions/ParameterizationURNException.class new file mode 100644 index 0000000000000000000000000000000000000000..cec07972c8c3762c6f2fc2942e3d8cbe9d6d0ce8 GIT binary patch literal 1253 zcmb`G?QRl56o%gc3M*pUV5wmJSk$(B)NV8}CWWXGYoa1)Y)fMNH7v7q6=unPSmS+o z8z%lKi6&lv7iB!NECgF(qVdP>%$YgoIqx|$^W*2&?}+0z3=PFJ(zubr%`~mt(y*?^ z4fWepJEauLDO4C1yTal@-+w7QkM{&aw)vL7=SH8)p0V${w(QjyE;JnJ`CR&K-VexW z*%PkK`)%QRwj&RpJz-$a7downpI&^fZ!#q7wzT~R4DnLA&5&p~U5Z+2+ETQFK}Wa; zyweYpIVNE^!N`sl6aJCyG1QwPFu3cBf$bSxG2l{ohWKELp-(wIV~@LhAbb+?k*k%% zSFPR2E=kUn&K9Dyqz02pD|0+%Vh)a6=UB&TYIj?gZTw&3DEt3@fFxel-+vj-CtS|bd7T2OgkD@X(>O^%8cZZ6v&B)fKTrH$2+1E*E4Eiq*Whc@A literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/exceptions/ParameterizationValueTypeException.class b/j2meclasses/eu/artemis/demanes/exceptions/ParameterizationValueTypeException.class new file mode 100644 index 0000000000000000000000000000000000000000..dd0e6c3205c553732fd9c3071a86ca2a29465e83 GIT binary patch literal 1327 zcmcJOT~8B16o%jF=UOX}N(&X0MMe50dxc(Lkbs(KkdS~)j2C9uPTMuz-MTYdKmL_B zG|_|~;Eyt%*>0N(O^h*K?984s=REVCIWs?gemh4J4`3Ns%OQt5S=`N$=bnLeJ>S>E zhF+;;QO%;pFxL`o9`@8LAtmn!hQh&nKHyf5dmZao1&-I*X1KQRds1;vHF+c9X8wR=L3e!W5;vU4nwk1Z8D_x{T5}-A2^;k4Bb-^obc0L zw3%-ch7*kJ*qKsYM>6akh|uDJ60ReymTt;<=;i z-uSclP2C2Dce*0eZ=0$s%s!V=w9J8Sg6T-p^Ob4)ZlCHWg{Jc3sQ6$^KcJMc!EKvr zCRZRngiat_;VHS9M*(Gq(#59lh3&Qo^y+m6{+~ryULJKc@^p10K`RWq|Jry&-gV|r+Pnfjn0a0o1y%XhhedDIc^(kxI&K)NZ}g!2h%L%sG-qoCHbmlUlvJcKM+?9zGB8o1KaHd?EMb{ujVQ;6BYOHe zcDeQ)$u~o!3h6Us>hzrxH-<1SO5P&O z!w7GV5-0d_j3*dw;#O370k`9gcH=S(I*IxW?hY0IWJ%$gIrqG|y7_sDB%Y(K-R^HrgRoR>eHLFu&=pJ_misdX%H=jcqrA|7#d q0{MwRlbMd2tv~yL#1P59MYh=ajS2p-LzP(pSP8N%LzP{Y;t`o9*N~^F%sBJnI;!4<_&=b2q_06>yd9t}RB&6GBED1$N zY1xftBkA|!H$vGlF7Fb&k?|*)4yP(0bQ~Gk!Vl$41@>6ZgqDFVZ(Mm9va!JKN!RFe zHHmx?69-zGFsTN;Zs$wZWcR$M@}o6^b!H;pl}9QzQ~%Y(o%qN+=3x=q|KO0Y|Hmoc zM`8mh{z8DThBPvqvy4*6aYeCJjtk7Rm`ica)*BC?`$UuHXeDf&I~yo4u70Snh$17_ NqlBeoR+&)>%kPc+pRND^ literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/exceptions/TaskLifeCycleException.class b/j2meclasses/eu/artemis/demanes/exceptions/TaskLifeCycleException.class new file mode 100644 index 0000000000000000000000000000000000000000..534e11850f73ac326b3ff29a2b0825ebaf051022 GIT binary patch literal 418 zcmbVJyH3ME5S&fyL?jM@1RAKQct~&!q5;tukU$m?B+&U3eZDr-nSzmYw3el*e9naH^->O=2!MzE3kg{Lyy_jkCNgQa&=1gyp}- zwyyQ9jxd7;Vf#Nhgzm&bW!he<-*l{?B6kA_O9&83tqH53E*(wc1e>C$DF?!hC(z?` ZBoeHN3^8a4M$?g8DdmKLGhLL4G9nx-zXX(TG1G*k|FA{O&S;`8}4mCqo=H8#mo`Zr^*(nR~nE+s{v5FpN1A(@0~^F7qiA(l%z7%MPxjaTN;| zETnKPh3gDs18(6KC9FUvjT~B#tiD7tprooU{_FIzS zV8v6i+U>lS+7++c6dAAhO;Qr1M>q;5%!U^*T&u`#L1-g8UQlSsj!-fv$oEaTX~e616q$j5TZIAVk48m41ivSqa;+FpxmNm^1hB{x17P2+6|@f%eIT$3qmR)Y5H2rrs4DijO1&+CJs9FH>DQ#x)6O*Y;H=`VwjCjDtbUOv8nb# zy@u0;iuI~LRtCrTy*!2^)Bjd4;tWRVg##%}VIMM}CrW4t2M8aG;W5I8VtAbJ;TS%G zLLws0F2 zePC0-iixU;RRe1V)(I1#RGw%bN)>v6|KiCb0zD;+?gV}q2|qd%?N|=eS99#=_a7e! zBlkVuiyjcFmHI33M!0R^x7__md48*w@f@6};H@}n%i78zA-@weC1Jeo`EoDr97%Pc z?+A81XfV5A4SY_W`RK$83EOoUyFx{>wY>K$5Ba%LKl6{DPRLGzma9&P62nZsT1c2<;xQ- z!u;hCgsuN*H(~Okp57zyn26I;={E^$+0Lb7vXbe3;!1kJZK@vxps`O{q zuz;&P+Ta!CXna7jY+ms>^bJ2B**Jg^)u+@Ifm@q8S<d%6vzL=0xflMVFg4)C@Sp27OEhEuJOVZ6U~MT`AEDR+5u{Ir)xXq60KS6nVmw3F-Q~lW*rao2PG`>V{Lkt9`1SQWGMGo%zL_f1S|J7b}MqKR1( zb9!B}a2<|`c@qm3T$BtvFz}FJAQn-;Yuh4QCmolgewsV z-?0z(g-rKR+3iCf+bz`#S*&73hkZgBtwm87*@3h@(nwJIKsVb~p-n%5W#B2p(tq@U z;YM3dt2+#tqOM*qZ#0DT8Jy1Ar>e`d9VP871hqETj(PUCF&KM7t@Aq7cBpvyARRGP zm- literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController$1.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController$1.class new file mode 100644 index 0000000000000000000000000000000000000000..8a369469e76aec61453a0775a97313d4c60ecad0 GIT binary patch literal 3103 zcmbVOS#uOs6#hDyq-UB&U^K#r$RI%nOlUv^92R8>5=odi8PI?Not~RaC)3?SFC^fO z3-0@d`&NaoT4exHi#JQ3{0qKYWtHWlC4P4@nE(M4rfP2Ad+s^k*-!T`|9tl&8qtm~ zH7v&V1TyGS(XElTJ&qmnnUhP8T<+75N3V*)G-%igGHWurH8dwX()iD!>DBK*ys8~R?k zEc~?!61|7qup~m;BHlXNwZjbx)@H62aPck$vCUplD45Y@yJAP=^b5aW_LoUXc6pXr z-evl>JlBXZ>4X9(&^uk1)|Jg55TsU)cxqLx^(y2hRJO;^`ji(v$9}cu~hocv;6QQvIuVjpcJ;7-Wn{Z*1R? zRC#@s6o*uEoQo362 zX%!#n_z)kd_*lm$_*B8QRm;w=OC6s{Z`(TZ`CLAmChB=Tk*2v$nl@z9&-?CUa9 z`6xeM#%0uSY|HmV(Uwgpd#%<}9xFJ;S;EF#bxFG}DLvl$GY3W3ZI0SbS~+A)3hwUXLZk`qvt-1aRRzOM2tlZm)vJ3AD{u!->?5omM`+lK z7{9Ne#Ae~=bxL>JPndTajeRE&OE!(6dF~k0F~mW+rEiAxYA;-^a7D_Ec;P*PTX7Un+J2*Jqo^FabQ9z$uANWQv@|oW4|3 zGIatsWSdhY&OHW8K5smOmaLjm8&m4c>=@>a;ihanMMCuy+n=Io^CdBH4tQFE6Sg_I zK<*NCH79X%DlX3p?>~O_gX3psXJg-BQSugAAZ@+%_}M1Lq#1wUPkswFLdI|aDX#Z2 zMqRwQkCDprZYSfu3v2KI?&8Ajmp+EClKL tEBVxDNrq4U{soGNLze&m literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.class new file mode 100644 index 0000000000000000000000000000000000000000..fad61a545171f35b5216ad066cbce655704ba95c GIT binary patch literal 11255 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 literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/PowerScalingMonitor$1.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/PowerScalingMonitor$1.class new file mode 100644 index 0000000000000000000000000000000000000000..194f22796e5f0108e1fb6af6c93269d3b48787c0 GIT binary patch literal 13541 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 literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/PowerScalingMonitor.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/TriggerPolicy/PowerScalingMonitor.class new file mode 100644 index 0000000000000000000000000000000000000000..cecf9b382b4fd347ab7cd2f3ff73a72c9bfae6a4 GIT binary patch literal 15765 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 literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.class new file mode 100644 index 0000000000000000000000000000000000000000..63d67aa1c7ba552ddbfefad4078d9b4297c9d8f4 GIT binary patch literal 873 zcmbV~&u-H|5XQf4)5fGJEosAl3Iz@YskOufVGvSC!UdB=v5CYf+BmCpD|@%vU6<$L zgv5ad;Gqx`D^hI)QpIIBI8O}UuNg2ALS|<4P!si zS*DfW>woMF`q5Zeots2h`g|iQuJ7eir2S{W$+BHdw6MqU@;^nWO_xm{&dx;Q7>;wJ zf>o(Ol3BXyKwnNPsLbvP@s)uwy!cywUJNhD&*$8Uk^Vx>HC$QhnxzG~f=Fes{}3sE zq7q*$0)safspHec;1FxHuD~YlpoR_5G7znyPVANV8gZk(aQ0|i2)Js%q@-Ijg&Q2wPE9-Izg(HP@B{oPm2--ep;YSVC6r!fyvNB@&f+MFjU27W*p$brd2yD^=s~Yb z*EjO@di(}zs0;M|RZyV)v-%`h(##5Uv&8hb!}KX{+z*tsF2`ZsQQ-WK9K#0~(jpE&bwdYLw5vEIIGZ>ReQ!9mMy@x#A3pW{kv$ntow4l< z$KESJ+gh?UqY;yH>gq(ud5@quP%_m_YM(_Jui=QGax0|JcLc?YOP`=LP%}=jZwbj? zvN+(0$AZW>ZA*nL@>wEsy){dEAyR^##WTth&0~?$8IPIdDHZW5qHZQ#$M$Hb;#f)g z%x8jWl{kr7@k9%rnoxCDWl6{%MSkYw?@Bj+q=6cC2yXs;h@kabh#f3>s0ljpHc&TP z&6wtqNOiy$Y%NSAoTFeW2MA74LfLS|r~;~HB6%Kzb>q;D2Fh3OAa9$MU4s>4106IB RHa2q^P3#$E`ZZWU>j#H%dkFvl literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.class new file mode 100644 index 0000000000000000000000000000000000000000..a0461add0ef7ef04bf3da5ff86c44c3a4e6537f0 GIT binary patch literal 434 zcmbVIO-sW-6r9&@YpS&>B6#tpg05Go2vYPEY-mEklWfzaZb^2_X5;_zBzW)#_@l&^ zB6#rTW!{_N!MvHzulEnsagO~ikDWFKZR`?)(d6^Xoh!n2sEv9k^O;DwjqTLg%YY#HER&aUxQi=hlcQxlO&cCUSPAoY$)0r@FB% zU8?SNWpnWN{E^gT#srAP^Gj0$PcNhYC9+ennw}goF^{QJxLootZc$O_5+hq?~*2nR~wT%{kw_ z<1cQ1bOS*=h?yuJ#bYwYWIP^40OL`*k4Mpoi3mDyLYOC_coGRQdn$~lqa2e_q>z@8 zX+ayZ!aO4*FJn?dOnX5y%Gz{U&rY6}5ICEV(9`G}pVLfJFOM9Q(3eW26RDG_Vm5PX zB3GQujivLcL_VL$q$NlUY#q1Es-v0Clvb|k!IhPjn<8rL^j)HY;Gcxv+}QC%rkKrT zvJ<(<#6-S0k;`RrB7Q}}ky2T!RtHK}WuRI!2dWE}GhpbtUOc>aq`2=uaevX)W(;c} zkrPAKDjTJxlxAwPx-Fq2d4VsZmNj!$9TzyG5+eB})0xv9qa-18)G!U_n1tZq(3FIx zacf4G(4I6*Jzc9z>-MB5jfBpmRnp2+nr(=+?`(4BjH-mgNxi0Owxd^!syd@rG*hpt zMrEO_=4)m?o0(L}y<(ZFN6@wwblWj>L8Wt6cT(D-QK?l}{)9QBFOtMyVu;0*OJ3#u zUF7+e{f$$baiPul2HK2opv@Q#;*gAUF+7K& zhoKTf6&UIU80v-?&toJ84I?rr=7axDhZ2;vI%K9V=p~0oV9n(ghI%}2*=eo9!bd5W zlwPg!h_MTUjeV~-t!E>F@PzfTR^EGFtZA3#)tY0J)iK-FmUxn4(}t&0Ra>vRQmCrA)fofImNj2n;GNN!-P7Vw@}EEwt0+{W!q@W;h<67_ zXrn7ra~5h&*19C_m2lqCO7kg=xf+V+y*;(k!3!A(p--rVvpyjmj+@boO}z2$;XJ_A zW4+})@2y^iQr$Tym1u3SY}4D<(GtTv9o5n_&_6~`JdyD?0nz%>6O zL~4a3;3C*vPqBw?;R^%>U?aI?15m&RieL{vZyvd6?hY`f*Cp3Na{bGQ2zKtsCyn$9 zq<4m&v~wjKMuktMG-@QT-Y#j&@}YZ%Rp^LTapW1m0n^2b4c zj9?!|{5oabcLlazMf7vDceX4eR=9@fI|$LUjMmT4_95COtZ%?&w{IN`7cvFK$g!nQm{0h(3s}1_u zvQCH{t3o_bPnG9;id3C$stEH0-7K{9HcIIYCU}#l=Iw?Ao$C_tObM{CxV{N24%0M2 zgkC#`mm$5E{20N)?hnv(9nGJ*iJREpfS<@ao|o&I2r=DZJnRwVQ5$vfK%GjAVpDR$ z1h9>Mk@e{6`IoxT5sDKslzWeOqX>r6pbzR48A%D0(<5>mdS zm6h*l!^#h|5#>kPsPYqSi}EvVOu0qds{BIRru<6VuKY%;D8JKoD1Xp)Du2>;DYt36 m12jFs%r%6SuK$<9HOS(|liXWM{0;_ZFY=a?@CfGt9QzB}hhYK$ literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.class new file mode 100644 index 0000000000000000000000000000000000000000..35b4d03ff3c934075878573a651db1fafd70d1b1 GIT binary patch literal 1102 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 Ag#Z8m literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/SystemContext.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/SystemContext.class new file mode 100644 index 0000000000000000000000000000000000000000..990c0062259af888fb7310504174b59503243a4b GIT binary patch literal 3207 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 QgMLK*JT2uR>Neoqe>EV|X#fBK literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.class new file mode 100644 index 0000000000000000000000000000000000000000..68f331deaa6cebbc77d9c57c1aabfe3dfa72089d GIT binary patch literal 775 zcmbu7&u-H|5XQevlO}|emOz0*ODQdXCF%zNRYYm1EL_L3tq4xh#$AQ2>~*zXSK_fa zA#vaVcqqg;iNfZm?H?hyK6Nm2E*&rOdemn?A zJ#QR@!(b4`pBcK|CBNoQ%GK0~jFxKpmSLlxtHN+)Mm#M=3r`p}KSu7@KV4R~a6lpn z=dN#wPf6^DsiAwoeCM+^f2-HhH!@s#>j7J!e>dCzUiO3~Mi6jTq|v z{6f$GPb%S;*+l4=Pf}94UY_uD#I>w=A=b?oSuni!MCovCL?#R8LS$Tt!jaik>O`fA zf?@0=d6wnMiM5WFGHZdrVT&f6B>B<@(eL43>NP2w$!ZxeSdzC)8(WfjGHG|`zc(0KhF?Az=K_bINE W4D8_n#m+2mP@{)L438+*u=@uHrma2z literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationListener.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationListener.class new file mode 100644 index 0000000000000000000000000000000000000000..bb21bb9e9b8d569129d23183c9ca0617026d2a54 GIT binary patch literal 243 zcmZvXK?=e!5JhKdZPk@)PoRkA04^(qLZL#$eHw?7nxxVu9?pda@K9pA(nV)63?KgE z&HM9w!31_Nk0Fj>hOkV8)}@fQ)LZFPV-dFNycQ3^w6GQ9u2r@=WZ77@xgacf<6B9o z(uA-|8e_awQVghEb&f2x`vHe=B+o?a$f%B8$p}jwQ|7K2_m-cEGn4=2j*YT<@XSX)~`(TwEhkJ#l z?faZ6_J+~mZ2vLj$7qAg@X!sv>^cn%@obKUkcqyiNKdF&W7%B!(0*mJrtLIXXO~D! zze_?6WVe(N?gX)~l*Mp~ zR-I~qw-}?<3StxExI!6C7uP}tM%Ah=ng53PX9}X=cM)*13!cRF5WF0MQwn^F#Bm?~ zeFUHC;-_#U#IKXwIAQes^amh@ZrYxer7p5>Ba%}|G0qOkQ zDUt)|zL3Ai5xR7jE=_bZ0o_g93h7vocYM)5_31i|=<4}$8?zyJo%&S@^!(%r^nP8x dNZ0R3BT-#y@`~zC%Ofdie literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager$Receiver.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager$Receiver.class new file mode 100644 index 0000000000000000000000000000000000000000..c332daf70ef725f7ac3f859bb3d4d0c105d75bf2 GIT binary patch literal 1874 zcmb_c-BS}+6#v~MvJh6m2vYoPm9}9)FG@uL(bkAX{5m0F>3f%hFmjbERE~9VPV{;O?09YlZM>1Fl8jS%;mO)uhYoj8w)uLcP&ga zqyj&T7+9X+cqm<|)@07tTDp<)HN#ZF^*vsTHLnGJ#J#v0sTDuq%IB+BJ;_5+R(>TE z9$(l!wah15nB~1^hS7s#5>i{VqG|&p4ATV}a}h?;Q#D?ep3t(!l^0ZbDb}U?#YIjo zd$CroFfr74?)~eW(4rzk0_-R~($R{HluO_@l~&O$hJ5x=(DQ>!l-itMmJD45rR99= zEz59GELTaADfq6aE{RZ?dsCP)@iDY7G>Q;1*m#ht;`baNb^5f8z_muIy|G%<%*%;dR6poFvIA@~|pD>(k z!Ih#=>B^n>!2?Nw9o_4i3C<^M+{3qqd}kw%84I&E3YcS<{2#4nqaUYi%%f=IKE7wT za$qnUr*X!{0!j=gTA}P^#>OHX3qLR%YGD|qb(vu} z`(EW5sh%9%Cu(G$>Ulbw|Hx~5W}SP=4SiWwrc2B|XwJP)1y1?o z7{k~H{raGFqvN_OGMW?X%8R{%)RkzZ-lnvoI<|lOEdYG$6FM6J}Nb;?%HpPF+Vl zV+M(I&ePevGP3%N=momX(mhGM%Xtmv3~eIeoY_Qjqpo<7=&}0qV|3sNou6WWWGBgp zOz=6f#Ldb4*Z>d0X#($%ozW^fZ;|@xHI8K3wqQBGBe{k4Ep+^W^bR^VVLK$V&9{xC z4BI%Czz(`L(cP4HZ{v6ZFaQ0!Ftmje8w3xU?L0-5gmLg3ETYdSrso*P3mX1k==E33 z;1$j6Z+i~UP=VaU0)*0K5}y$%%VgZ;QE0`hQyahlE7trNjy!4J-CA}fOkK` B06_o% literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager.class new file mode 100644 index 0000000000000000000000000000000000000000..7a9e4e6e6768fb58e2cf9dc08eacc80998568a32 GIT binary patch literal 4347 zcmcInTW}j!8UBtfd*#(SaosvWG;Ul{QaN_AiJMzxH{e@|f^0dmlGce^XDzMmb);Rh zTE%vNHl^Ic9m=IZAy6&>8lZ$3HK8-5PdxC}VTM;;ndu8}%ybxr@9av78e5%aCRpR$ z|NqZ_JLmt-f6o5(zkhlI&De`Ss(2WuRP4rS1y87yoeJYg`JPeHjWd!uD<88ep2E`# z<|2sToO~Dx=EKNJwOkmciY-`Bv4|x}SyE$JKF%x1tJsc$0=o?kR>Js%3KvBMp0q8g zxPVppSW~f%i&FMU$$m=3r}2zrpH=Xjg3kzaq>Y^AEV@QvIG1zHVo^X#*tY48=8a;} zln7bTh_$o|4X_lQr_E4cC%dD{FWbXR43ZvlE7GESl~hgBMLZCvY^DTsAHky5;C2>z+C6 zy2g5{1|78( ztIbxOc1mv6eB6@zAi5cL_sRNdIE*72rf^bV+wBD(DJ?9RE(dDv|BrM#CsI{NW+hDMIdt*TF?eW%98#>!A~{3jGt-vIewwwmm03( zR~mke-$=GcbeuwPebVuAW2zp|G zIqoWD(e$R+VEiV}<2H^b%%m#nODSqR>^XmtNn+c_q08+JxAIYk>j=F+`5H4jki?#-YFQTD^s$brDzgL_=jX#oM}Hp%VXI;D3`(0VnyE zm(d-sqj}~vggRTwXpOd&p_CCWqwNONHxY>|QT}d16S#@?CcKF)@$glwR*kk+j5_%4 zyyp%)9IASF|6!v{t1}wzE92fW?qgozo9Jpn=&%}9{vri8u}!ektMN!QQpN|m)N66| zIzCv9bbnp0oM0I{q+PmZcRa2}RoY#}u?i)}2WsQ7+V}%;?e>uE(RP|fwLdpsgNlFQ z-*|_gClS0YLWqi((8WN7AHsHVT%<(0!q2i;A+bxy_mCL%-&wIN3e=kwPfMPKk^s2w zIEFPROBg;CQ6$4oA$kA(95^Vv2N@pX7E3Q CJR$7> literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/communications/RemoteManagement.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/communications/RemoteManagement.class new file mode 100644 index 0000000000000000000000000000000000000000..4ea241bd8f1e55bf97fa769cb8bb5665b1b0dd31 GIT binary patch literal 3361 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 K2>srHFa82vb(z@! literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.class new file mode 100644 index 0000000000000000000000000000000000000000..57eb0820584794276d030b973a98160cf525ed2b GIT binary patch literal 2283 zcma)8+inwA6kW%cOkz*tG(aeAT}**sJAt84ZV6W#b19B#>p+#hRAYM-2JEqGk0XNA z4``)6xA_MisMN+%k;;2Ns_Hs3?dYV;7Zx(YkJo28S_dR=hCRZ1y7X_9>QUYoN)GG0}4Lckv7l?jXdur5el1`MK z*Nu*Cwk?Ww>AeVq!6>Y{NihXZhF}CMyIqiHr%#@zLZYYfr3>Oadb96rx?>tg)=?ML zcE4LU?wF1(#`g1!3|DawhXf9U_)Wzk4ygD9pQ=cspyC9IDsH2s;tmP|7eahw_?l^z zwpDs=_H4tlx$VA~vfy2T^Y2cUiZ#A9e(W1Pdo1;yiahQsc%Y!nZ3#hnA1eziOll>N z4FL;v^n`^yt)+#>d^((;-Zg<)y29CSO3$-2A~Q6>413p`bYAFb;jWLl$<3OAk?y!0 z^pQs?5cp1#Ra>t=b3RA`x!e=Wug(N%9OIX70X%!WBGNkmX8BHo@xH`Sfger5=R$q} zk$;WI)&SAJ5c`935gg`yo)N$*V*I$Ka0VZ7q`Emcf{!^8(vTjW#;3%K=l2nR#TOT3 z#+kerNRIo-X?*4-Ut@HHIdl0x5nI{E%*zRYn-0K|8{`2n97mCH>ZaMT+t+W5k-U!& zq4sdZdsX%^ySk6LJ;Y-#qx>-}>a@CqIN!@iVuQ!4LfCHz_{b@mapC-;$GxH~fzNqG z@D+12d>%zqK}x|j1=l%sY^D6ksSZiLdX2=^$^gkX3~=eWJE4GioRm zVEk5Le2J`d&bk Vq+c%Si<0EoJI!dpvnP*}_CFyE-;e+R literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/deepSleepManagement/IDeepSleepAware.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/deepSleepManagement/IDeepSleepAware.class new file mode 100644 index 0000000000000000000000000000000000000000..eead93c6e42546c6364d3d567be1647b9f6d95a9 GIT binary patch literal 198 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

VusbvuKpiWY0Z!JJ=#K;> z8!Ei5=Z1G{WKgBR!09OU@pj%J4dP~+ztu+*sIh%026l?T+I@VPZm{-pddkOFprI$F z*8zX!PFeRn{j-ll+-`7}LARkgJ~t=G2)3i>(Fu)d$+@Al<2F(SQkWPh(_G{|$5zg8 z7c#M*y-AUQt9b8pH^+QJfN>+J`lJ>1t3upUP<;?I#!S!u%A>Z6dcp9R|%a zD9hkdK(E1{8#6_U-;de+-UXNoGi%Sp@7Z`PgD4b#S&F~&p%tPgU~UGDE#Pk>%>zZ% z)JDr`E4bXI_zLKg9lq8o9)zzNo3GI{U;9zhJW+I#PV)}Xyc6eN2AVrSb0=ut1)94- zvvnGpufxpgXhsRHY38p1vj?Z$FQzm?lUi(<)@GM!b1FDSlPe&{DX_D`VCC0oD$`*q zLFYWCVVYL!_GkOu6@K?H`G;xx_Ms16_h%2&4D6nKALX5(qV|H~5t{kUGC$0;1mFPv zW_2E+0zjPM2%V4q>?2gHp}t|7GeUFqAWsicmb#WEg61&v8Kp_!zX%pM3%aR-)z!k@ zHqdpn9e0cn{RMpKddz+j?G5y4`V@VE{*sQOCl&Jy29T%EzeYi*2 zn!FtxWP^vHqz2t-8iWE1TPkej6``Y*7xcR;%Mk=@&AlmF98YuZF`9Fa)!d>ozd)0k zv%Bi3Z_&IFny=@_D03xE0NJ0V9Ef!a)N?)^q6*m9GP)aq<_H}0UMTZE1jnOL&zGRy zFGGz(Sn(C~{!S_KLa<%|JfcVm8$*sFhm`v8j6#2{)R%>GjwtoHmHI;1>8ETJl+tv! zY%FNgSWs*%=*we4DSc(h{nFOgAslRg)LWsO87m+y#O~7CY=5?`r5Vyo`dC@H-|ZTq z1#qu7%gV|N%Ak=2$Eo}nya~e!XE;lSmCkVX5KXA{C?~8^P6)3w9o6mboM?8hEGi!5 zr;i|NETYR1V-`Y`k{406tDtdx~^lhyD4pu*ji1ZY0_|HJh z--WL|OSjPXlycUC&pC)*+RJvqH*SCeCFaT6)s^*AxK|z# z8}1rUp{M95(+OIHh*@2*c$h9I^c<%P@g1fm!Lo8C|61b&)wKJK5xS^0C;Ks)*X}B~ zxUJn?u(Yk#>#E5u%=LR8zmGa>G=6Vku3##tJqJW0Yr)YO@b| zfEm`naKsy+tE81|hVv4=1owIcvH1I_CSIi_^crf0*O6!6fF-?&9Y4aJA7j@kJgvM1 z_kEonpr6q{(9h{P`UQ6X61#p4t-iz_dPiB$L5Te(M0l|oA23`%pHb0zJ+j|l!9H?v z(#vq}1l0Eug1{~4nK=15SeFEq1}N%t2rXVvbxH>a;P=qy>2F|3E_Na0bcr>>Kmoyi3b8zhfKU|qYygTHg=8KGsWEtg%-)zjD+_=yHIKnU$RG{D zm?Z@Hq|J{x;GMCvz>y;0{WH#kfKCWHgQau_z@wIS09>PWeyJ@-C9oC|9hu+#49!fp z!a5ijW|Kx(e3)`%b^UfR&4z~|5FJsbEARh3bn-5O_IuFapCF0%=|ad%^0I_;i95;4 zvNov?z$A)fso6W|PT-TDO_fC`9hG9P%nrd`NJ7b5A=Fw*fzr9eyPoalw`n)0ld$>O zHJ)V3e8@?ewK<5zITB!%7yG@>*hNmGxZMd_*Y5WgtRJDKTBFc&(g^wy)-O3sE9ASO z)~tlv!_^v&Q}gCAPTT^~$!t=7%88#S%q{fXLnY~Q4$4ArY9WZt_vavyOZ^oT-`ozX z?Qwi_8x<{BAJetE3Xg*J(3NFBJxrJ26=h1rh(?*_7+qsy!coy|=3GL

|o)DuJxSvG5i(-;=i2nb*^5h4R*eXIVsuRkpvL=9mZ1GJhiJjt&cH zSEMX?YSyNTK$#6=C0ZxiM-c&^Y{kD8_sZf5B$mY$#nlzX?(XW|{M+vu?WP-HIoRNs znF|s9`BZhSypyY8DHossxsc}a5?YOZBVVjEUWQ{QA;O9#rPx~MXl)(+E%c1HAG#QY z*-<-gF2<@!se50mC}VZTxG`g#@=m6|M+{_j3to(`?3NNn>P(3!`kv$wI4@W9`Sco_ zDy9d=-7j@$=Kj^=?*A%11dMVEzZa*8$cyBBE%KTmZqm7xh;o~TDBJab`vJ`BC^uE2 z7}pbC;AtYSqiK8zJg>!(A@DeoE24*$c$flawdq9W8QMq&_sghl4aktENh$t}(pGaZ9dYhn*TuwqOzL2RBa+Lnr^X~GF=lQ)hn zBeeBlPNk3nQ3Q8DxFHC47ZvetMW?>J&vfXViK10MN@(hIDxZW?iwI=trwEZHqq6Gf`OU`%9fozlmGW2~`+RL||2cP=&t$q&v~3A8GCsXk9aU$OxuqVn@vX zjO^t7S?ufwJJ*4okAs~9VCVY(H+CL#?E1U5T~}w=^)oav&3Mu+eOsob&y;k-pMs^| z2uuGomGI3-h@ZiKIJ8aBU~H-jYYSG|Y^MP5?@D=tK`n4{R6tS> ze0(S6^IcHc-875up@n=eE#@!MDn5!5;C^c6Aquj-Rm=0pLJBAzUAQGLQTFLZAzg{9 zpOnv_){)OfTm|(NZbO=-ZiFMD%uZHcVyUZ=S1y$yYgCHu1ibk)@Zjj}S@Hvq?Wl(! zGl?3NA`*zLx!k@z&qPOGo?B!J0Ytmzj-e0UNM$-5L>{F{dt|$GM6%R!%q_b9m=ftO;KgY5gqRiN_;S-0n0)<~c;Rk3-}WAoANF@<|Z+osWn} zrl*rcGH%8w@+b85M z3+xcO(|!*^l)P-IQ8vveFLYOo(B(^Wn=Cy?gW$+0h&A5>z<{ zO;mr!rg66X(gABW%tkIAf|oL3|25sV(PL$+D_s* zWN8wss&+3TcRHpHa-`@*7Q#H97q>z`P{qZ$Fr!FJ8B)8O49p{;3evPoRFI;d2`FJ5 z8Dv2|L@DHnxyDPx1&xcuC5@MfuV}nNysGgUaarT5#Md;wPJBb-o5Z&?UMIe-@g3s3 v8sDSNnR)|?n>2wjV<5Zp9qij|qz4pplm;DpNU=22Svd}_k7mEg$)(Xhrd#FCjB7i;v0#u)n_+rtPX?%&s^E95Xak<6|G_KINQsXL(7y4)&R~K>(FH(82#!GyFvQ*_|KC0v8 zD%bj`UbHKG)X2+yypmVtpZP7xf1VrA2&_SkSBrgXe7u&|sl2|Bw(tgx>r~z-$gbD8 zLFGnq?k0^d)%Y@jwOQj$8oyr<*rM@fm0NwZlm4pl7LB)R`~i*IG;Y_pLxA3<@pjSf z(D-tVJ2k#S@*T0`OIZd^PXXxT}z_;gH7NDu*@h@llH2R@u!O zT^dIO*4-NS3qqohDf@-U2EXpWWC+lFwGp%I4)oeYP?6#m+*0t zQyQl=-Ybs2PY8X#m>JUeS}>K~*7!OwRkYWGse-x>seFUVH!>B5!l_6+mfV_%?`2xr zVx((AiIg!AN!Iij1EH9atVtN*c&sU(PYP{Rpzj8ABw{$0s z#9j%@0VHoQ5g$x4UEC6m57Z>nv6|#yJXI5pCybhODiW>1+Cd|ciWo_tRQem4xPeLQ z?=hmOP%FBM_~B+IZ-1BQqN#6V%8$nT`iulqts8NXfx&1^dpg#>bxViDldKWzBeA}k z7P$||G>M`s3>d+1G?Yx1fy6S9SSCm;ix`H{wQ|vtuEoo{mUSgUJ&|}>bDL89)4d#xfcw!)wYTO?-28DP*lQ*?1 z0!cJY$gke?fdfNrMkpDN8Ht*$@qI?39caP4`gkmrh)1JRKQtj)h;B&Gm1RMDDuI>2 zH#2FZpj7EmDgk+wyAd#fHVUpNp+Tlu0P3P?Osgja)@AEz2|EthDkwK~%2O@|^NhVl zEX6e6jo_Y8DwG-;#6_xWZEWw_*4Bz6=j{ze(^5`Zer)O9ZG=;pRE+&hizf%G%PF`O zZhH({vdNm}n6W>SOo3L%@tPZea@_h~s{# zhG@m@T`~bh*|V7TNFHO=1e>g-t|#!M6EWP!RAj(Nra}V{GjC$@#c;zKjJ|{cY3bde zRLV#UwLsp{j9rNJFilS-La`*QW)ggn7XjC~J00s0m$AZ)sxhqDxUIFJr4f>tE)+b` z(;VxS_Y&ZkW;>W>-kOc+-d=gPJWUOoabwFH7Jz3SXccs;&qxUlLN{RyIgUeQB!z2T zlt{<6CL#kNoFgu@*<0Q$HQQL6IZ_(kX;{}TOn;AKWrF~z7)x-vNGzP#W_JX>yw-*` zqZc!#jbyr{d>q}Y7dVD&8>s9Dx{Jn6w8m3Sad0q0ySN$q7vVJR@pK|=G(`k&OWmzb zwYXL)-=y=0={HP)>@AZ>$H8X0FuSBRE*CWzy(R%dC3U`;Z_()~z7;?8vQGEW{W?8B z59)N3KCkj^I^WJ8(dlveqRJoD`Jeb>OpDx!3kF)_0m~-BoduGEMmW+NF?y<1{husj z%rqy9#MKwTie^_h6%URu7q*UFMnD?302DX?#F1nm7Ec92fu498z9<;b`Ez`S&Uf-H zOjWtSfJ3%t&yr5Vg6a*q_KZPo1qR~@cyC^{He?axAar1v8E(OF0%I+S2fdNHNnD8)0e|0B55+&T6-SB^WThi_O}E zWE4&UI34E(Cl(0F7&{9p!=Z%HCp>sUvZN(9Sck(#;4CBcV8Ah$1uevBQhDV$f`f45 z*;qac(Vf_Z@UKBDrwE1zlIX^Rj{U(7GpI7-NuBTJdsMzx=ll46xDuDVWQ+$zV1=mR zoRDl6L6}Z2(Z4d)ObSCb+|v00dYNgt%Qj=ehzs}oz4tjJ)jU30QTaigkMierIz~_6 zW*{A@Mmkb0(vfPHbfnrP9ntC6^c$5Q()nQ?HeqD5E*BUzZZP-}dXs5F$+k8)&Vvvq z>r|Re3#s#?lLEA{WfY)kSwIcax#;`_ek`Zot+v8;>3^Xvw#EwUGS{g%GMrBaMYJbF zy+#q<>-;!>5sukqVKzpTE0IU%xJelTAXMZ@Jpn<5^p>Vu{1Vf)iMHBVM0Ge}z%&MW zLkNU=0{eEsex{Sir~;CRWWb1}2Tb5e9MIwGt$?B(d5MvUCUAEq!VFhsdUiXO0NC9V zZ4yp-z)0 zIn$*Rf!>l%4T8J9iTFSuX$SLxDB}J=If4#J`2qp%f9R)74d()G(99t$VA7w~w*eMY z{X}4dm_{=#6Dyq)+gckY!?qPJrgl`>C+kS8LeNH;xQS^0n95J+{3Jh>!?l=xI+z{= z3_~8f!;uK8{It%`@NuTDiC8l6t!`-CEEcsHNtynPz2A#mPU-51tQ;5#+ro*6!iBe2 z3%R;6(t*NSI^JF74B4|6H)DoOI~DHKB-5dsBwu8qB3B0a_pTMNE0I1mq)`rVGeTul7KLa^Au7AJ;|%kf8^r896Nz*Y=Ai{|Q(%GP&Y-%Vv!S40nM%wv=aA5>e310+6XV3PZ>yTOmwXL6kSFlcRK4?kp%|DvHH! zl?N2+mbp+d>U@Z#22kQ|A3}^hAQB5>Km1MsP@2_Xrj@`r5fo9ccBvyTJ;!|rLqs{J zp>gB3OA%?FD_XG~HIoU?>_#oF7s}vFn_SC!qgXa(yTt0KD zVwH#}g{ZF5A@c7}-Kf&DVx$Ww(MM3N+MYGG zYNDb5*iWKQl~&>Z2wh-pahVY?D*f*pi{wHZ$%PIib6k)Faw2iem`LW1MRJji-i=@&yqK4vJ;-vkmm3lg)9HPTCf|Iu4g7?!(IzcDFfp6J8;I+m8-R}L}?ujc;r*IzpLr)kO zRK}GKI!(`!!Y^R>U77|yDJtEqasi&Z$Yb_ZK7hyF&PP_k{-e$j0-r{$|EBX%tOwJa z3&68ckIS5oa{YjFguuU1>km60<@(p0BLrTKTK}%|QLG1JoeRK^FVj~{GYLKLz#J1* zIgQ~8`!=nRHvz^_we93eObK&qYUKHpkNyMD$OpmGqtL{MXbwzsCEk4r3C=QM+w!0) zIs*s5QVK<&;CxF8*I+Hv^Yp@dQMJmZYL!iuW>Xb(q3Rf@dID5E2`o>8s%Jpe@f=jW z2>QoURU@f-3G$XMg)hLVJs8^nw3>hQNm_G?)+!)-U5gx9Z;x!QsKmwJFpO8>FiabV zX_{yohDj4`(~}a)eB9SMK$}lX@U@d@gSfFKUu$U!MxKMi`!XEp8O(hZtDnaSUZ5KE zm(Yu}6mJ4npdSQ%tLdL7P7xKfK3H-wO7OV%>A|mg_C+X6S zN^Raux@=Xxe^agY6utiyn(A*kNt-*LruPq1K1NPb>+`hb6m3N+P#`(^0h^Q0Q`-o& z*XGI5j_l~R5!${gf0(8QeZ%AvKY2l)Q-ycf%CbW!OQrvE>>Z)bBXnt{{|dXm8eoO@ zx83rUFwPLrRpTADV@ALmrqZC#+U&ntqT1Q%zxo7qopDAA*Vsf{BQ^FJQXOGL$lewb z+r$AKlil`Yx0uY3f0!PrdV#hb$;K^V8%0>4sCu3xXKdQ+gZ1EG(8#O&20F8Sa75-2 zD`xvnP;aeXtQY590}{%5YVA8^Z|%d5VjZr|+EJ{Zpj~757Qq?}P0zs1@c1xAL2#Rc z;N3RCyDgqL1<-HNY2w0Zr1X6i#UOJ+q*4b?Qxvh+K+sp>^T$rpwoXCU35uVhK@Xv? z`u9NkCB9RX@W4pj7c8{S;!oNvPYRZ2#%(^NL0U=S2<=5{>&MQ{9J8(v_FE8!Tp^5^ z6%Z`o!NL;o=m2)@C@J)R&}(R9l*%MT;OEF$ehE|jE70;g?D{pmLBGNKjNj7l=@0a0`Xej!C)VjL zgh+oui1aqx{aIc_f8#au4maU@=Qj3mCwuWdV;(+lQh7gXcuib@_n3wJG*97ga}j@+ zr}A4oUGcDA@$n307SB`yJWE;2=P6A*TWR4ECCcwp;#{ii;W^3yo~s<>GUZ;bRvzF> zl%qUPImYvqQ(Uf`<^{?dT%nxhO647{@?6LZJ!^T9r->JPw(t_q4qocn$;&*wyxbGx zTF+iy;klkydT!-ao`W3p+`+3o_wyRhBfQpgjMsUd|E8$54tqvvOQ zsppq`ndgt(?8TR7UVNwQoy9HQi+HniLa)OCg~5H{aD3pb=zRmd0oi*My*CgX$XSGq zAEJLl(BR`?1hd~n=BF!7G!J8sl26%VLs5=eI|`N4a8_SKKv<}}BYWRQZV6{&hZ*R- zCY_%cGo7E;I|o|uIy6J|UI0CK6v4OdJrCOOFkIC%?+i%yQG}aIJinv=M6UoGeiVB0 zee!vlpc_8`y@ib6QR$&lx`$Bjt>em`!Qpu*!oLY2plHMxw%UB=!TKc)m+#-c7`H{wjeyFXozoAu4p+gE5fD zAN0=3Jr6Y#Z*k0E3MopS3>cI1XVOh~-bHy+kD+(-p?gS0TqXLqVsr}H+cB0`Bxmou zmu85WLw8f*O#0~j{;6RxeiNR>`0bdt#`}(mx`*w^J_dV^j9tVB!aqZ^&4{#GTru8G z8t=eGy@LFFCC%cUG>^NeoV#fyhiL=%B8Kau%XzmW&Q99bl9Dj44_k5eG8_tjGy-mj zh#Gl<)ho~RHe`C2XL^cw83pDb#-tly*k$GdZ=#*1b)EhXoS=`(h`gmz#vD^l6QZ(% zGJ-NgiN`bN@nbi^Ma`F4== z5lKpgAQ9HaN@md$77^uMB>g`FBNhDZj86ZHo?rytuv_{vf@dFgo|+F_v-&qxED*T! zW{V(tPX9^zM^$^Bve+f?(rLv{GjfI*nRz$XakX*McL~g1fQ{z|&S#Ew+QRqTL7niuTax{D=>e z%J)zaKS-r~lxp#L&w3c`Rz61C`59>8anvhDXbAO(Lwu5s@F~gGtEhl3M?NT=PXP_d z-Z#)YB73i*2i9eneoDF~ywO8x@fTpV2YJn72nZgAgiBG>{1rr^A`d!%Y6%>Oa1pc| ztF}|V&}ff`Et|h@^Z@D{qX!xxSA63HNeboe1_+_tev~TtiI&sk=|uSDJwbVAAZ0i^ zpjWU)l!fx;$aga8n-8t{En*e1&W|YNIVidyOC;QR!uA{x_EE8_ri>^?XyPCL0lu!^ AO8@`> literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFactory.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..86c3e002f91f8a2cf6400ec182c7cd6c697485ff GIT binary patch literal 1347 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 literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerInterp1FDM.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerInterp1FDM.class new file mode 100644 index 0000000000000000000000000000000000000000..a57de032f14b8677e1f565d120acf6beb7b4ad9a GIT binary patch literal 16582 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 literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Variable.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Variable.class new file mode 100644 index 0000000000000000000000000000000000000000..d65ccd21f4547757bb17e200e78893b1c78c8fbf GIT binary patch literal 2993 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 Wmt4*ims~1_F1hS@{yuwHPW~JU^c#2p literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PTAct.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PTAct.class new file mode 100644 index 0000000000000000000000000000000000000000..dbefb3686a37f02fbd44d2d7e53e834c4dfc592e GIT binary patch literal 182 zcmW+vOAdlC6rA!^+;|LJXjdMwid2k=nFmRZa%naub1{vgI4 zn;h#L1w(3RCd&|)yQ}BLC*>uCqM4kLbXEiTP`4*(550H^h9fyHjHOY{{7$3LG;=jR z2i`c{)K$w3$w@y{=Zvsw(tH^+Y{Q%nLU+8n^(1Y^zz`uIO8h+%z-x-kHw<~`vHAlN CQ!2s$ literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor$1.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor$1.class new file mode 100644 index 0000000000000000000000000000000000000000..2d057facb0b025f0f933e4535e4fba42d019c346 GIT binary patch literal 10390 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 Mo&oUTD4zKI1SYepL;wH) literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor$ReasonObservation.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor$ReasonObservation.class new file mode 100644 index 0000000000000000000000000000000000000000..02ffea4767c4f18c777d6219eccaedec101cf2d1 GIT binary patch literal 2791 zcmcImZF3q`6n^ePSwgqAr8UOaqNXh&h7B~W3Q^kzs%Z)7gc!%sna<5}CELO-b9YJ8 zul@u7Np#e7oUtE$`|R&=Ja-`}!ktN-3CzHK*>lcwUY>K~w{16iUgQ4yrY(izd*8UNp5&qHd-i?*v5*aiw_UHb=6i1FOWj?WVXE=O z3wK25Is~}vlIX__UuP$VIJdUl!0w0RH+5_vQ!uV=@wDRbvqA{_E&wZbr$ozuC{ea@B&o}C%ZiqdG!i$MNsO~wUt13&1Ny6RY?H=XpBH=ycyWDPbuVt@qKNL<# z5~(Bcz{E!;sG?vvm|RhHQJe%nXA5P;7h{i_z}PD=d^JHN%3H(lNk`mq6&GhTJ(O3; zwvfgJ_4A2^vpC1F(34(i(3T~q6VTQ#`OkS;+LUgqC1jsOCT?1|h1(3armM%P^1SvY zRxDIdHF3wnr}&IP)~S&yq9uhGVq$)jn5E1i@A8fmJQNuzx<1X5W`=vsjF8fona6Ip zlc`kKl<0;CqD%z&+qEIXMBKcIRSS1<&q57r46Y`I6RG@I$5F$LQk@~MfghcPLjf=> zYZSy`a|P5wN7H51+ofTodhV#3XcBAGPb6I8b}Xy7ep!PsP70dU{Yo;FvqK}G5lWi) zHA7pXaaOB8w?@dFM{B%`481R%p}(z{=$lr9me%u7pEwLPg6VvbPD^w$Xien~ zVC3e1LhO4w8F-m~6C?xUS4`91QhTKE3SOg?;dQ(*un^L#nzAsHjz7hz{aWrv#GbuwuG6#i!IdXvreg4>30H(0|IF0Rf5l!2|FF{N?hWH$a?OJE=)mN|9nqo-;Fh?(>~9^Xor9|AGXr;hur>c-O!M zT$`p@VG5RkMHF=`8Muz+X{_MADcmsdK0Z)8B?D!w>iAH{O&uRGq{3Y{$SyK`SrdJW z%TRRPz-oyu_e5a1-CoDC`<}ho*s`Q>eD8tV?n@rJzGrRvkA$=x-f_M5hVQwdFXQ&g z4Ab^wFWeQO>yW`!msoEye4U$^#rbW9RyzC+hv~j*we?r$amGnomA&bLpz} zXfvtOz%bhsJn+57P9WqUigKHG`Xpqod!CSM9UcUN_YgKd>WoQnitLV(aE0tW^85G4TmL)v<2kE=rJc5O^Cp|_x;W?}<%6Af(Y_}oMjHiH)v%bCC+z6PlT zPlBJJ5aYwiJ~x;T{jQE+vOlVK!6#CzavG6oP zsE-eim7$y)YYKKK={6`odtdq@#@ty1#4y7hM+8B(xU@+1{O#o0QEagPiJ>35oxtk& z?KUOHsu2~E8t3)XVm~1#2BJfWx2xOLCe`xFsog0?p3E-)PqUG`1P}6`;qK{qjI$a8 z5yINh5iQ+NM>NR?0o|5k)m!oV(NjPlsN22qfZ=McGJdxW8Px4(huryQgZGf3_tgcu z*DlgOtvYc;LBAw4)uU;Bl~&8N(uf-Q18Dh$ACdTuRvKn$Oc4*X-|#%mO*MysIlM%a z;bpus(h$(CB={!L%XoXFtU@$FJE{D_0a$!8GDD7$9+jwfq6Dj14)dfTO&XL3`Dk3g Si$v43K2ML@7l>xnXW(D1=vd1D literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor.class new file mode 100644 index 0000000000000000000000000000000000000000..675ededb8a92f24b83090bc191d07c0d5d8a3d86 GIT binary patch literal 22427 zcmc&+34D~*wLj;~B;RE65g;rkfI1*5L?D2O5EL6ol+X|`2?}Z(hh%_}WG2qSR+qZh zy0q@N?_#TUK@w23TDMxQ*4CxfT5av7R%>fFU)xvT|J-k8^3CJ}g73$BF5lhGJ@?*o z&pqedbMEB%|2*Rzhce{S>(9fOvxl2Er^>ep= zzNMdU>*pT*+^e7O=;uED+^?Sp^z)#8w&>>}{cP1wkA8ZCyp6Y8{IJE31ZfQK2-3d% zXpmm#$1MJCkjC<3L4KT{P}uJU`AL4tcjjlGeWt~y16&;BXZYD5oy_0Yn&$#+Y5Icz zKdY@Xw0K{NsBs zNH6jmI?kIx{yD#8@h^f@$Bza0ZB5_N&o2Y~D^1@G@~`}6N~>6q?2^*Px4=b{5Sr)#s9GQ zQzgiMS^Q6n{}rST{&$et`M>q^ekuQlKU2EB8xX=|gaaa)`U2t)h%Q}<17ZQa1cFi` zK}$+YDJ6D524UV(7L>s0ogwwp@57H$hd$U5RmZ!IWQmx1?1p>ObE!tfK&zKkbq1I(vdPbAX5TTZOPOi zZIa2BObgO=G8xO0>H0a;k{MWx9HxbtmK+|WTfq@BD@eD??10o@&t*_3>sSU_HUDEuZ)JeU99<85a0UVM)@G6w}D&NH`gfEnbm~B-Vyg(Rl2* zaA!KgWH-cOk;MGYa55Q5G7aqq$3#q4OKWX&YkeIPH!uyFACDzd;aJMx@L}T^AoH8+ zYXPD~VJc}^+Onj+sm`hJG5PBnoV=fDNL~HWwM!dY+Zvi$>zj|OZ3NzhOo67lw)u-2 z7dJCaZ)}fuRVUN2>ST93Roxy>M5+^!WIUZ{k0h&8iEu30k#3J9lGTm%b@St$@x&a= zYhGbSINEfofA5BkAgJA{FV1CaXIl zUEvs3Q7}riYjc1?=7B0h6NTG`t?XBq*~+5!a5{-49_%$(M;Pnh(2Zeho9bKImNqwG zjG{;)5l?{lnBw4gA8#~9li-=+&bU&FX{Hy#XjgY^~jz1cK%~l*5|pnjkp^ifz$k8@8xp1L%4JwlKqR8=BLdk@-$13+$DOtVj3V zlNRToD;}$E*^mVH;NWRLkhUxl2iwI~EeglNW|I!hXUwj2XDYfn-d&vtcSPgWU8@t_ z)t#r}(|Bz2l1wL{85)asMCu}|5|PNFNHPgjOtk~tZk)VD;l!!wNTfQGW>5g{uodAH zPQZr7$l6F}4s(S$xHtnz2%shLb&*7_X;{CBG+^(BImfdz46bUx(y>w?AK`&qp-1fu zy*AdgtBe~Da*l^s8Lwhxd^8e?w9T42y=~fIZ8O>orN%cjE5Vk;JEQFza>O0#nun2< zm_e5)cWEkT8RC@-<=vp0%P=1rT(P->E>N$^;rZBfR{`tz??(MdL_z zZrqL~T@6`y`v2fRy7#W=rltwydR@8|#_>-x4H)fMeC%YrD4jkun%#+~7 z?de2P)zjcrk(5h0V&TIlO!QLRW#Ntv7vMnm%+ z!lp?lprx!uxg4yjW1PAsSU4sZXj$IUP-n738tUuo%@M}|0~>){nSH_#4U66TRF;fD ze8<`|@&OC!h$Nv^%tm9UR)pi|y}vVO^q#jN6{$@m!W#-^>F+RrqjG>AE3x&YBs!FC zX&@cxNeVqMQLuR|5?!@=MLgjcB365Htx6%LihksqmtMKjD1{=OEbN0KoeR=nxE-cq za{TnEQwJn!3lFk~=pL^0?CqECf zY7}E!?^MNS=X#jVHMTeBYE1M38=%>cX;x!`+2h?!s&>lxDbX+SI%fimo=pikIz8N_pHeJa)C8ot~S$;oUR# z<_!BEibC7PMX(uDage{X_omZegm-r94%5+cq?nmkIy|oglX0)k>jYKnxtSOS`+sE{ zPcyV{hTvVt3ui5*5a*z^bb zz~+6mSgFMiwKz(PBenRx76;MWmZWW2%L%4XpN-*d7clMD2htQbKy{Ioj`5)WEL+ye zdYi||27LHX*#Cw6Y{^Djz9OgDJe)^Za=I;N$eA_|)p>l?mb2t+Th5VlZ7$aJS@bpx zVaE&Qc(7~^Xq~L7x8yuq&X)^pE&&C(NI#|8$<~}-p~m7aP?PaA*1!o9OC@X6ZDJfU z^;)*%Yqne{UuUZJFdO>wQ{Sy0Yr|DpeS=f7eok91l8bc>msoPCE#HuD!o=?*m~+)} zY;|x%=6W8=_736x6iUTIwp=Ec>*osGYC~Po&dz93U9lZWTdtJ#mRx1a)gUnan?7c0 z_Lz2_wNof$UDvu~byLpqlihS{?@EG%@fughnx;AzyzcikHqX%gZv9_PXP(Pn z<{DrC6PnlPg16~!^jD_np3cSNjC$R6#y1!Gqm=@iZ2G&78v8#R)p)#Z`iBaK1sak# zYIj5L=00P~wQ`*$*V}S~+z7X5AM0k^j!a+tyhC{Sxoo*fZqAAbb4_Votv+M;y>>TB zAyW@@=cegS-J+jcExFB>+vN_X%FH=7{-l~vQ(Z`B5eg^GQM|Jsz`VvhfV8_hq@-TB%DY_Izm||8?d%D8C=oAkZ>=X|dtj(t~f?1nw zxm&*F;OL7EdElt_!Xe*gxbpYSU$a?o#xoW=66?N4Hdu16E#KiLTkezlnP%npfIwP{ za8M}Q2~sQ$QPvSzKPeQ8ugldR8DiR}IUNhZOB~9e*bqvJ zIY|F9UUehu4UdGTB_XLD;U59JPR-;UfBBRaICq?wnLmXig-jW zLhDvXVmjxQp=eTR6bi?bU7R41(`6l45Q-wSE}B{$a$+*ZcNtm{fsYnVmEbCmIFebp zWkyvR4DUxQ12D|ly6li`4#9>O)+$lpeRM~HOihV1A(KDY%^RWVSV)dKHKDr2p{B*H z3mTe^0iJPg&63f`eL)YSk`YMghfev$jT7`Voo(q=t&_*ip+gfLhQYEO-~l!6*HF3} z3LQHzd2Y7J%(XKf?+&euC!BVrEXWFT=m-xf6d9;v7!LG4@tJe1*s@Iz)OLB8X^IE> zLb=x3=X~yFJ#OLJXxW*FU)-8SSv;NqNeWr)_yg4Wwte z(U$M)Li)ymJLV``o|7Ng^1QrY%MU>(9;>4AfILxY0!mZ*0!mXd0VRd%6NUz=x(}+_ zK-u!5ykyCbY+JOIv=$OKf>per?HbZ22v{m)-At_cGIo9=rU%w9o3-ry?;89@_FdK1MCY z-{)yj$Ii6nJ$YY=`GF;Wu;oMf$d*6K$CmubmOsPvmrwNb7y5wd_&uHD0M%{YtQN00 z1y2hgEIkI>3EMmJl1;jMreEiL_(%!wUW313`it>-LJYI_u25{XjhNATJ8KoX(k;kH#R?N`i5T=!{n%*tE_C((F)OJZ(a^ zrKVT5AAAJ-v$7=>&MC*@5V^nzOl8!7!Kyd^jUtWuy<$=FH zoM+dvK9+8b#~^P@3<;dPCjsCgD-L%%p~Xoa1NR>$7egBDHUC^|AQgAEZvbrR#ZVfX zimXUu4WP$vIctswfp8SJ?LEJe*M{evwL)1nKv_6`nu)3!0pz?Ffq^mLL)rh`09bC8 z2Z!fPb!XQ-4d~>a9WX83JvDcRDI-hsVoi>q$NY4V`p!rf+$;s>I|HHt;=SpQ1Nwd3 zypL;0Os^7VCkA4ExqJ#vz&rEEEMIfv7Cah}@qP@OJ2|5#)a|16!2V|eVe8COzvgTX zryADknshgw^0-%K6diV9S4bMNSg!i951nU$5I$THI4H;$n_#n zUniK#`K!ZtOWB!G39ZW-^h$_BKcT_InfA@i@YHm8-I{7;EIgb_tzN33R>0v!mp+H^ zPdHk`QZB)#KzQsCUI8dSNC^=?xEpU(^btb)n$|>EHLO1w-H4zWL+Yfia3J@O}=GyT;J5_ zYYwe8#GQB|=1^psq1YyzI1hV=B^Gx^Vyko$$^mTnMqlD3;+>spc1!V%iu0HsHfi$*_Lv=@6yX+a~H6w0gc;b_QkZg^1MHU%%FKC^LJMhEu zwXs%WF(oVEYH5zAm7$KGurUAJ7g&{1i(8^E;y$*{x<>Ctyq- z$@(n6>{(5AMk0_zHkNNNHW(RlxXw7Qrx&MYXO-)SRZZXXUf|Cd-hwXB$5bkVn)2Sv zjGi!m7a|uAe^PaMPkkoL)9ow*$7_1%?u4P9HrIn+cqAbAe6@|Z*dDf9JHn$gNZ^C{ zty}uJx;wgOXKn$b^`_>L*lcN^n(=y34w>3ouW!?f7dO{79a9g2FRDGJzNxhqLc@sO zMd5B5ORv%EB=l4I8BL{1`USmBOz-F`c={#EzjBq|MfumR@^4W7t*iVy8b!aS_j3J@ zLK(3t;2Nb7Et4XYWpE={W>Un}FEL;7p2; zib)YjGbuuAnyR1DqzJm16md6`!gXmCAe2cFyfP``S0+Ww%A|-?nG`-nlOkSa zQiQBbig27s5#ci_!hI%1c+8}T0h$!CGm|2aXHtawOo}+4NfG5UDPn;pMGz2aKz+~n znL-G8Ey2B#D@{Uf93O!1cp~3MD#E|SZ&huhP!;!(RPCU#%eT?E9xAFT>LGvCq#hbv zbx04DRBfjNdT2b71AAylRrx_ZRA#<|%-60e?xE5uUk?SV{5^E=r1A;9G_k2_@^-4~ zp+hE>PjVF}Pb#0{DppS_pPDUB>!InB$`5rFXG|(TEL#MsnUl&7&lUkZYf|~_Y!R(B zRpoQG(-Bz7W(wB$oi&y95LZnqpF5n6+D^5-G;cf2?;)#dD-GE}by#kF`O&>}49Zq7 zEhuk5zLysE(ii)v(TMD#<&(;rw$b7q3IH_l1TE^NC8$3Z_08L;rH5KkTDrW7x6yGu zbUX^nOksHsolvD+w$X{2wr0}fGwBJM?x2$}lP~p9MPIhOFFOK+|1$bk^itasbaD^v zlc^}rRt(KljL23D-%Ld{{s(b3pQl%FZja=%`E`DS!sO!v!5Qz;EPO8{Kb=e^^mQ6e z7vYRvO#9I#bO3#Ws^~JBMpw|`bR`{0SJ8aBnikMCw1_rQGhI*1=?37siB{9i)J?b2 zI=YR{q&w(*x|1%Y&FFDA-ALa?%{_E4-A516{j`I&(38kLPraDa!F*G_}9sA(Q6hzY4I}_y+{aKABl?ao-I3PRI;J zKUUEf-3-hI{|;(jzJofJLzYCg(aK(0)i>fubRmfU0R0ZE_CA$C#D{o|Yvi#7BbQ`H z7JVS$j2yTPJ2{lde|7mmM{tvGrr(^ZhY7}NFGY={8HGvZPW36ysUFo!YcdBKhp!KO z+Uz1XbSI!Iih8Ll2Rpbtrm{t4*b#2XI3P#6kq&kw767NswnhVVRL2FgbvI{K6s?+F zx`n#GPlL-(-A;++4^j7KDn`wAN8o{ES{&hfMHVTBuZ4-WmizTN|@d^h{^uvc8dBjbC*d`xZ7rS6y~;QRn&F>8zP$ z25S!ua;8>MvYpPZur}RD8%O9^lW(O{k(@sI78+Ecls#?J4b)aqGJEiFItRt`@c+yU z)|hYm8bkXb<>xzd&du)vOrfF#J6!%X%`5b-V~oD4*up zc(L|VtcGv$`d#Amvpos2OQgH(d8vceo6g^G8V7lf`Aw&Brf1`2Xv`>v>g9x*WT*ndWA8 z_?jCH4n4Pr+(r|s%CB(rca?G_`!jv6G<||KgDbIBSD7}4V=GF*Cxg*>dK|oh?iux8 zRZ;5deszBLtvHOvYS5E?xp}93ugUK_21dqa8eUUW2~lyaS{WvH{RscPROEZp z_c!0Cbfmx1Kf`}G(xv`xe-dgU;6KxUHuR>Z7t?i)Am)|Op~P{NPKAC-z*bvFqj^2e z;;&ExpN3y4pG7g~xg?)Mm+<*?4PQVvLg(GZ-=O>Xa_G1#=|jGn{?40tC|?JSay`%D z+qjnR;A8ksUc`5C3vcFS{B2&r_u%IS_i~KC!|V8dK7+ULMZA^o<{tb&`w@PXAB7ft zjNj#FCBQ!rn_rM|{GuGfKavi9P0r%i3X1-#_`!zR&m{{v!U=ALP&c zl_LIe;`2`szyA;^^3RZf|8Obx&lbx+S8V?R8RTCiW&Wiy#Q$X(>hF+p|0)^g@0OAN zqzw0`WrTmDRQS)7{rqRkDF3-K+J7PP7t0v`rLwR83JDoCb1w}Q8^07k95(o1-#;_< zz+nIETrQo>QGBqkNc#bMjepT+_ zBakcepKGujNk#rkO>VBLKL6Djh3)fS!AAj({fn@}UqDU(d6{ErfIBY5-VGtYDqz?% zBj|fn0tJlQ7;GFL{(%;Ky0D5Z{2hR06wCuuQ)Zn<-822`BtWJ4ebHGuJSu(by(+Kv zs)P#Zhtv18SLK^tm7n&nRCCMsS^s*%LF+e`0{iFouZQc~tu?o7 zrjm1oH-Gk8pWQbK1{=u?jD8sHFEi<2Ih?9co+@+9Y(f}7XbRVxgMgtj$3%0+t~HkE zL<8l+PFQr4TAo$pDok}3n2+XTGIlDgYh$OXk=OVDx;Ykgu~y1l7d479ql&(-%XD^| z`kA^Z+%l7EpKGw9}GnQGw|tC?lC$YtKk(NrYIxNsHc$WW{g zg$=Gn+~lz?D4qOuE%aCy^I~3-n~2YBYH`*6xB}}=xhK+ui7ej9MAX@W7rFX;*}+wO zEfqrul6-Oe*bf9PTga364M>%Z*ZYG!W80h?0>He^5wP#<@m z$1p6WngK)(fKC~J{>&P7eK7&hX0}1w^LpvKmDtY5P3qvsKm(#dcGd#|&Jt{wEPyLh zcAd@@4Q5) z1X>^`Qlp$iOXN$GmNq(FPNs7tOc%-ux=h;XCMesxB|_U}B|Ryt=qIw8-jXPND5ub0 zWDSR;ldGhQYb3_C66ct7^Ljazza|O3RFZrR{_4rClI92TzJHsnzm|k`4*nwKO*PK59K`h3EtTM7A^0|CGrQnf%-@; zmXGBdMiy)&8*8~6rsQN8Gj(`O+lpK<)^!UnMb5(NZs6mP3t)|#_;}<>u+k(9&&d>& zk03P;=H+S#$tPLShTI88v}xUmfD_Q}13rnr1o>1hzvM4-n_~#cG#W-nI9e83+oD@7 zx*g(Ug=5O(s!RsWng0M0*$srToGeH2?+gvdHADavd(} zA0jnUZh@=95qEBo0f{mr_qtqo2Gq+4!2DjjlhN*(8Tl5=O2B?CIoa5+B_|}^V;gKa zX<5+X5|2>G@Ezoq>YG_KqG+0u`Zr`; zncT@E?GHD7;90To{~ChE3Cyi ztAn(n%L^L}_*I3qS@7oy8w~ghg|!)QEVo#%Q0B;v#fZ9HmwVK`V$67jGlv?BR*$*U z?{&!X0I%jK6ba&1fq-PIw^`Zn2v*DjIly-Gv7j$dN*JO z*FdMKZMuL%_$quC$2^9tD7Z}Qa>zJ$d!X27Pf+0JAQ==ZzyoSQmm}6Q`hmtBwC{4< zP4?SH`#)}G?gv+m$yg-LTK;UPp;we*vN_2q16K~ZOvWkE&_)?*;Ly(yehi0Dr)y7p z(Q4$*X|>jqRwMRgq3b+pHGEG{toNGru$|9(gXgTv_hiV8p0gghCn&xGXJ3ET9G^6ld~RGbrX{_{^#reFEYH-bc*2_gc;o1It*PRD+H~$SVV#wG(uMJ|DWX zcY@CTeCW>E3A)nHhwfZH&y#k+0i%Q8ua9=;^93HeS+Xa)`8B@K14Up@P<)*)$}Or$ z)enN^`y)hceFs^WHzgwgy%+*M0}cUN8RBBNuCrY3L@3oYvlC?A0{l{VzOyK@-koh! z>`i2E6yM~_`k{bNYftEM`A&GJ&>OQ0y0{O@6?|o8M)e@FL*~(wwvo?!PUGqYh^=qC?R z~I8QLPA(TGF+f&3urP^P5MXU)mV4{4`pa%&CXi9 zRMo4zFR7p3<2QO3V_2c8P!sCL=U`>(S|L0w{ilRgV2z!N(RqEfDRc7SWzQc>7&Kp+ zc9NW}@IaVLHXM?aWAiQ@t3>0vLu;C>&2q6aL9Ew}+vdQjq?xPvqX_|o;Y?M+Tgx#@ rBs`v}re)ol#d?q-t=5PVFYyze{j`@OIC z`{uQ`&R;|cR^h)vG$RwlZ8%sC6WIW)AZI&>LpUsBq@2g2LA)Oy5UUT0)qO$K<3r-} zh>Q;haDNb$ctCtVDB~f4{gEIZ#v?%-#Yf9I919|ZM+Lyg1h>a3Amig=bufT!L3{#_ z3yPl<08hv`9zAqG_C5%Xs>0a^dzz7wHkWXQgv%UP1{-#N^8$*2_?3vOSq*&v!kkM zX~U^(G@%Wvy2e?xRBJTD)uyiYUcrIXd~s?ZwGq)l_urnlD4S| z3Q;f0wrUw>?PWPr!ZK6KY8K7njHQv7uue(FqQc7~)BPVeOf70#sdTj4G%}iLrL^n@ z0Y0C?SlWm+wJqW1IpEU8NzHPN5TmE+B6VJxd%D-3(hnI!bl9rM9B?-GceQo2JHoE_ z0@w0B%SO8ly?rE=wKUz@p^X+hGmy~ImO3cnN^b4RX3{F{wlFi(sWCkv!lhg_llCyF z(4qBSJZGqt6H!92z%wi3jErwcfQ0N^oZ-dhZN^QbV=UhYGtW2DD53KmrA_nnj_THa z%}T|oaj#*UacxUVB;e9Z#&UzG846<9Er#tfUR3ZB#w4s|nQCB}Y7k|r!J|wyc$6sx z{<3eMrYf{nOS!3BI zHN=OrTpA6kQy*F`k;B3YFDqz6yM*YR*i6+X1+U<{GQOwa`}l#3A1e5f(BM`4Siw)Q zUBMP?RnR9^uVFyOPZj(OuPgXDexYC+wleT%R`AXCzJ21>2zU3nDIIoGG||w|5ay1p zro(YFd`DQpFYzle{8||5Hwu1>mu37;!SC@01%Je!BwRB^yv?v#h!y-9f05ASq2`ry zSHkrLnesUt&ZlQfSjJx!{0)Cs@P_c+Kk!cp3knFjb~xPHQ%|{Br^BXUGrbdG%W%|q zvzWADTN&F5I|U(ZYHFf|F#p1N8UK-x^pN~*rsgHW!8Q6c+wI(YK#Q|T)p;%8Ct-&N=H)rgEV(4^-gYchv3HD`gqFCtl51IB zYFS=tMR}?9C@-}h<%PFmQIF$X?YwRME95E|ofut9Xh?EKh~vt-F%#D9te24Y%nlGy&|Rc#k`qg`SUX7Q4O> z_dD5m4co)reYg3SIOJu7f2P_H{_z-*2IIrGH_JBK`BIew|5^kIweKYz$w}s0!ext$} zMM0eN*z6roXIErYGpo7fUW9}P8hb>)n#pK-Lc&TffLS>1r9^Wt_6o7WX*JzAb>$S| zuPmYMwUZJe9=`Hy-)Iie3#%zT%jWSCTHM73n-SzR*t3`x%i)%93SW_MF2UTph^a+G zEGhWrpsgMravSqb)!N@LVqG-$;;P~kgoF*9_Q zJqpIEB-XSr2{=L2sj~c3O)2CQAHF!7`L6b%1snM442p({Z`7dZl{jCAcViQ~+s$12 zP{n;VP0l&H8fRu7;>_$hILm}(>&I~izuw~O-N!jme-^$ml)Q?nQ0XMf_Kc(CH2mC| zg#Q)D;|NTmd>p|s1Se7P$Rw0;%)5ZfJ)x?zxMm#lPh)9^#CZ}6CQv(oH$~NgH^do{@gt&_^_Y&&8l>ctZdJk9c!yxt| z&fiXAETqis)VvEjNt4o}n^b^*^KT`oErcY~Xu!4Zf?r=IL1&Xgh{SRLl4#I!wrC<% zK~1jT<%%l|D#Q#rCfWx-k`8;t1vo5KY=D!jUt$Jj)sAASTFJIlRFpjy`1se z%oudzdjK^w;eA+)BRsjEXAkl80cP@p%-)CT=%Wn9V+^aukip{^!4o_=jz{q%#}jxK zPvI2Jb_UPjBER0mbCM4y9hYomIJVIEU8EqB^6Si*t#nF;G*qriN$nVO=1#)VJ^29O zD$ab7oLt$4GRos)uE^xVlvqizO59HosK-&3`zR5yaAw*kCCOs~8jnj!bsy&#Qf_cC z<$O-S`|DSng)|kYZfI?D^a#5UdHE>q0VhDg)euv}hhfqb38Xutfga8wem673-^1ig Ias~qb2NL?dT>t<8 literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerTransmissionActuator.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerTransmissionActuator.class new file mode 100644 index 0000000000000000000000000000000000000000..692ac3fb4f20f361b56e583e3e433126a02e451c GIT binary patch literal 2546 zcmbVOYgZdp6x}xv28IC&Qrc>tG*k$-11(evwUtuPNO;&FiZ2`{7dkbW$(l@*{;T?E zv9gx>*&pR{-#a4&8W!M(+{c-7_c{AK?# zO#lK`&i7?FQ*x?RSrxccs}!9`E(br#a3ys7YT2t+y}+M#BaQ;yZs139J6aBdiVP!9 zow=TOgR)(%`F6DuM7A4*(ym2b$=+9*5;%7RvcPa&)@&z?ByHJ6S$2F`wL?iuo8DF} zbd+T~c7QmBqg|ohp8PZC2PZbQD%~gu`MISOY;DO<;BF&SuUskFg_>VjURu!ytG3ej z{4G1L&k9F#ow`GVs++G=;~ zQ^_Hs4k`iL3eWxMsf;|A?%nr%FM1%*G&r;>&^!|qr9fBS^W|c#yuqM58zoA5@`3A= zR-MpO`$X6rJ@v?Y{#a&*gV!jXH75?(jlmP7Px)$Y$tcbOedrw=Y83r+D629eJ3TfJ z=G4KaO0+E?a%3NeR$ySTE>49gWCErVzyqO6ZI24{*Xin*E(XzDQ1gqk+pesr>R^yl z+ar4wp&=4f`t7)`WI{(rs4+pm8&um#>cT7pwa}Gwp32YVBSU&i6{Up?1`K>@;Vaw| zxT*_vpV=D(2)M7Z7-*J{41>_Z*Z9W55WZDIR^ZIx+PBb;>jGo{hn>LIamP+v zQkf(AJT4szS8>h4Wn57_)-8MoM_~Na)>jB;;SRDE#xQPxt(7}9NP|mGcg26v)d^eL zc*eVhw^Rf8!$F}_3BY^yALAdCYS&6DG7g*oCf9l%u zU<;gW)Nbs|>PdS4*nT+$l_`CZIK|>@NtUJ0upV$Nj9>@Hf@ zcF^_`<}TW~vVMV}u!GCam+1P5iYdIuv5#g!&}M>m5$pn`8NT2*DYari+=9)WGB%PJ z+tkhi{WNwaJNy#e8hlvnpoj3;Ut#js^$KqtwlqRZchH8rw0w^wC$*(MdPB6tl3J-i z@T$cqZYMTvy$8|?{RP!y0xc8+AJjRV-gB5;l^mW*4tFTG{zC6-oE6yj&D8d%$@ozn zP{$q+J2L^Aqo(q;GXZ+%HTqI-AkFeW%Um6^&OK(GWd1&}S}{TXDV@3vrcPn@WPd~I zMSd5}Ys0UQ-a*Ts)C41zrbd&_S4?+h54(jvPeRe-dE93pfDQgSDM>>Z_)HB=Ny)V0 s0Ujn+FX}Ty{~1DsQ`F&KN%T|rkY7@m#zoFOT)oYLRfX8W`4Y^30buEcI{*Lx literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator$1.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator$1.class new file mode 100644 index 0000000000000000000000000000000000000000..69bb85d13336beac041e5f09ff2b08037f07e826 GIT binary patch literal 328 zcmb`DJx&8b427Qwuw+TW2@nNsus8xjLZV90f1N_FMeF?2Q#L>@S+O%(b!f~rkz5%&)V`cyV literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator$updatePowerTransmissionAction.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator$updatePowerTransmissionAction.class new file mode 100644 index 0000000000000000000000000000000000000000..fa69e9d4db021737e9c7a2afd449a02804fcf9c9 GIT binary patch literal 5311 zcmcIo`Fj-Q9skTG+1YFcqJbcl!&QT9f@C=p2x^5S;6f5&4i0Hehut9z?9ME+Gmt>N z+IsY`Cx~dR7cCyGLLy5LYw4w}z3hEo_WBq4Q=fj`nayUCOq%%kH2Y-Uci#8?-sd}S z{pZ!!QG(_8R~U^j!dM40j0_Hy^VKRx7Ip|unB(Cvj$lB>px8MY#xZun4~qAPWPCh~PvDbbd*kHUZ9RRx zT^%IXc0fI>#!{-$AM3U)-RLLOtY*{5+NxpiP*aXp1k&8KLPCjS84{MZX--VFY%Q&4 zV@WNo8X8B{R_(zIXB#_Oy9EVe3nVCk)IvZPJeV^3^FsMx(9@YztlKfVJGb}599vIi zW8ysdinY0LL>RnDH+1_J2{%N?>m^}YnhO-`w9JfV*}9h9P`g7yX|tK69F=Xlp>;Uv zy_(gd?oDx}s?AKOsU51Ni}(CuKpT*-a%S@NwGJe-jIEmn87sB->sbkloD3DAb(%*= z$5M?fRg~q4jR|p%Mv2oJR&z?tW;Gr^ zOf*y6ND2oiSFL_0O)NA~ogd8!V&z$s5H8Tn%J`a$mn1;Kv6=X)ADQ>)2`gQt1qK+n zfq|70djBspsIKlo!``pidV(70HXSRWZPrDIEuPX#>qY8Ouoc_HW0#DV6`aL61-BtC zV@Sa;UXiedsjr@?uU@3SdY{x+@00ozoJUT^1qCCx=;3(R=~KZ5+$7^w1()!ef}3%R zg0JIs1>eAB1)FfIjBhIV7QU_EJNT}GE!Zq!iBC?O;3#h1UBx8Yluw&YiFB4zv&oC= zrYV9~DCrFa&0wU(W<+KzImvia!T0ce8E+~0fe`11_>qDiW0!(f!S}q0Wnh!DZ=WbV zk~=etH{agosIgQv)D9=SO4d%~?(g?uQX z+Xr$+988%+YM9g3Oox>zB+a_nJ;<_?SqG$3DGC@U)cJm!yZPC&wz>;wt zr`uVv^1FFG8>2sXGa^oz=0PVzmWvU4SZaMbiZLYdQ7mMyVLBb=E$B75h31Ye9c}0? z7J6JZChT&nxZch-G3}%~dv@hZdTBH+_CmJl2`-^J+EOfhp##2lvh>3GMSZ2$`{etl zLE%6}O3dS#yy8o&BBNSa&C85}B_A-ReBX7pVADFkpW9Li!uhqs;#Sc3?tNbX(rl}z zGus5(9=(uWxLK67v~KF%!b&i0SK@<-3{+-#WwE<$HF1!gc7p9jP|ajCBProVKRr%T ztykuVX@Q?76n5uQMPo&*;3j2BZLiZWA?l-t302=~59u|c^Hy~u%jR?nqu#;pn$~ge zHk0ajO!Iyr_G;v{3M^`G8Re z#s|zSvcd3C?R)^0MdNM+&1N~+?v_S3FAF4baUEE|VUnH-N}Nq>I;}RjH}Mzns$j}-76@~;e9z= zJ%j~(J`4HA92OFK(K)iR4LflMKRlG6oy;_0HlIn9LPG`mQH%YE;Q+-y$dd-o+B|Jy z55JA{;SenT4)b@EA4NI{86loMSb**5q_7kYx1)!nnDt@@>HUNAb;Q320U3=l?&Eu; zFqdRJM*^c;e4S71qp#vBvlF}cqyn*;6eNyio+v`kLWHnO_%4#T+hs}d4&@nJ0vm8D6pu6@!5o~Dzb`L(lQzRZJC;kxmk%f9MVe#$@xTY$S!?i*ouo-89*@u ztH{87I?Huct2wI<=CH;Sr1;QUSIF>1G)O2M5T3LY4GfsNyeI8oU;xLl5RY)@QSLp? z-BS#u#~40O&`anUu) zEeH}%DZT82kcs(i+{r)-5YKUX6=zt`;yiWl!ZzwZCaF4P-+N)Ac}tA44Wa{n(XB4i-qH# zs^^rV_8j%IKg#2s*=<8G9BTcLnVs1?&%N{9d!Nl;fB*J7`tUKnH}NTE4BRnr*F*{> zleX`fIF0)TW=$BlKY$!QGx0g*)YAh4^Cm1jREq^=uxQ|mQy9UQ1|Avs%0St`G6NW_ zCC?N7e3J)(2pBF#?K%%dRX!E|y3f6!UI??-|C+BC@$33OZreMT>hP zuzlf3Z^vy!K3C`M7^cKva1BTvbLA)eM{Y-<+q5@?6H1?6XPdIo5I)20UZ`%X-Lz|w zSF5h9>w|%<>|L*6m-RV9xa+7Zvl6%f>AU51@t{^gUfIwlpV1A8cT;=p`g`WC8KwQv<{YM5XcIa=8k-oyI_ zY8KY^c=N#vc>CrfKDz*&^@8W`mZ}2U{!rKP0rZP>Sy09z~stE(% zF|58V-m#f_#iUNo%Jvgd3DTP$ZjMs*DmZGT9@hVpWh&I+PC@8$AYI#$eucNF@Km!b ziy$CHIn*rOm3p>US5VtbpA;>LPK)HUwil4z&d2>s5=Aa!0c4n=_B;tiX>Jec{OL_Z z?L_dSx!|$jA1_V$DXo+yuh$ovq9r^^au-2y=Cx6OE#%G*%e>uH8nFW43VroX(|7U= zeelvWQ>g^a8^_(~%Ue(|7?{8fOUh4u(;}Im{CH947DpH|Wi| z7#<&@Kr3>DF%-!;l{G#}g0S@($S4ob$S8)+(l+o&!&v$`lfW?5g2~}ha(GaM_9sSu z#VA83KJ_;OSf&36Ylnaa6QF*IXOb)w72EV*L)qr&?(A9lCHgkUUm$&e%pcl$T2s}h zZykr$czwex;ZNbFw#(rYOcTx~{f1~K17=`J4XGprDcquWDcr_+<&U1u(x?(;(fkg~ Fe*jIYf)M}! literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/ResetActuator.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/ResetActuator.class new file mode 100644 index 0000000000000000000000000000000000000000..5578c666a4801d5de62e7b16333780344590683a GIT binary patch literal 185 zcmY+8Jr2S!6odWfA21R6uHiSF&))WIolddo`382ArHSVSDR%GO+78__-|5GIJCbo_%fHe{nukpBP< CDKf4A literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/BatteryLevelObservation.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/BatteryLevelObservation.class new file mode 100644 index 0000000000000000000000000000000000000000..87ae8b0850656b5e3be074e015794be27a6e813b GIT binary patch literal 3819 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 literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservationExtension.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservationExtension.class new file mode 100644 index 0000000000000000000000000000000000000000..adf3d8e4e1ab534fdf79816ea169595cffdedeaf GIT binary patch literal 251 zcmaJ+yAr`b6us9gXej)FhJyP6T2w~N#AsBT;j>mm|!zrtAY{6Ta)vW zrDcv&$MzCM{52O$&vjO)+PJI8c>SL_n@0aoji?vy~r_A65SrmsA3Y zAHa`7%qCG|sKo_a-g)fIeDm_pU*CS9jAI-dxNm~6W8wiGns|iAT6|K)uBI%QXc^cu zuuoWfqe7LwC7ibV=i)-xz6d?rNn;gyy}rzB5vMXxi9MEq2xVf&(v8B2^0HW@Dhlnv zD3S5SobPppgvv=YmV|m=h4ModjAVQ!Mm}pA{m2#mP{c~hOJybfq7s5rgrtJ0Z#!A& zd>owJfQ?qLNj`_uOIJ>HVm*Qp$RrWo9Q#IXgjy~J;Z;!z|0mLi5V=}7{FZ{V;HwEVUzEkg{+Mp zv)(uU2R1BBTF6@{F!VlgJy$?3DNZ@VGG>ynJPP+B(KkZ;MR@MOr{X3*f3$g8ZEt6WLP_ujenND1xw9`|dZRJ*Yr z^74tXA{_0jy&}UvUFuaY)WUO!{adbU6xF>z7E6xbX?RFxpnxQJZEBKpJUWvM`m#G-epyTxb;5X!>5r zx{|Vu%`nU|R4;`5OlU3DUPWku!yBNhw&Bv()-#y@|3zd;uJ*ehVm2gA09$IkC~c;ft1A1ioPK&60P zhWvrjDmi4>sG|(xXPL$B=t(29ja5rL_EzPWsYzM1M>t<(3J>xF@V~ z`1fHh`Kn@uFD;pJVG}t~F(1f@&@$#~5{-E~)$NbR9d2c4^iYjbD-vZiH~m=J>1-eK z;{|AnFfsPx=sc8>BQ{9NAKcDGG?TI$WA?xlk)#-kWcj<5_Z3#Y} zGk9Hns?9eYl<)!pLou-OER}I02lWzO;+5kS89x25#2Gdg0`JPfkgd8dBPA%llx{TaE63Tk*nczb>st5_pMVX%(!?1>FR8EoDHjm^Qm literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationType.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationType.class new file mode 100644 index 0000000000000000000000000000000000000000..30ff506aa8b6a242782caf8df828e9b7b714b62b GIT binary patch literal 1485 zcmb_bNpBNP5Pj|O7UK}&ge8y<%$nFH4EyE?36cRBIX1E_OW_i=P2)@$&xG+f5;y({ z0*M<35Ss)N`ff=4D8%cr1rCrKhw1KDQ&sO(Rrj~=pT5Ar0*Wc@!onD0IHMO+!?OvT zOX7Tr_<}ZGOyZK>FDGzC;Bck7Y^^O@cWRckR=riXYR#LCQnj*HZ`4YaI|7;VhTM{- zBi)W!4}9D06a~hYJhvA}H)u+yuLQEUZZ;ZLZFQ||HLdbr^UUr6ytOQ2vu_S#2q2yVrj0 zu;_XOSDQ3{QxHNA0hIE_lV?Y-@|wl z2K>i0LwDdB*XtNVk+K$Xn3n7y3`ar|CeSltQhm}y5uURwYe4gQNHbUXikR^#{{hhg zzn2;m{zq&j{|?4!e$TWe`if}`X!>L92w;)^HhWQG;=8POg=7^RM-?Yg8<8{jQ_dVC zkCXfW<(#0z2;~DgW{o3~Kr9h*udDyFnXD}ie8B#n3yE5ie&1y79(`8wf38z~Z-LrtYR5G&GFpyy(WQ&zTz z+sHE%Taq!nYgLEqD6sLKQYu%J+`%&s&+&qx{|v1eO%-^X?(PcB;4Evc^nAg?G-f=^ zV$Q=$%sF`FVIHJ+x>b%>ofSj(S-`dJJrNj&vC=gPY#Z*}x3&F*+Jrh$rNnUBS5ncD z$jFcq;WsG94nK}Xw8Jn_I@ft8LKns_EuCn$XIU4fDw4#n(^>YGF7Kp0IipU9{+0M* zbgE!%a|t6#@2cpeCs#9m@UiO0D58t*r+pX=>JyrK$ooZ?H%oT5d;N(jNpR?uITUT?%(s$; JX(bNeo~(i4lzU zU`%H_uHysT&@iDx!-u_?#FU2V$m}BxGd;Me!@#X*Jgech4jly@bC}ogv4&4H6a_je zzAJELK~+rYhicaj%=>Crx{9p~Ww=*nZ+28wlN zj>h%LgnBG6+-|Sq0ot5@Y^ic+doI21j7}}k-#mo#+mRplobVpP*QHZoAO;D0D67(Rq`Pe{Z#`62NDKYN@d6EZ zIWBn>-%@w%D0pX@9w|Q`p$)u^PYt|@w=^smSj3XRC5k3b(c~k!{A8uAWWZHsP|c@t^-g+5qVGEu6Hv>`d+I25fFWk#BJn5I(Fky6sJQqoPO zq~mL+>RNOfClqDcUBmNYGcBv7(6`;~sa9b(07Hl5VtKwYeHFyo4$Rd?kHn7WJ*t!i zCR>SXEZM{5@CZq^%(E5mdlmrC4SmmXl+Qph;|_UotezH+V91nzIRq1yTi5Hd zK$cqLZ0m^|q2vV*l5w^wZ6~Uj1zDDs9rAJD?X&u{$Z*c9#3fd%MiplHLBu%M zdKWbV?$lEXrS)i0GR%EV8OK4!MLuPNAeOIUB1$=cEt8mSDk?NwJI_A2E|`}W_qy2Tpy+gvr3=R6p+ZclWWRR_&*JLZm*_HbR zeLt|1h+XWCCnsW8jG95+0jdF4X%z))oNWZ|CAjw~&Kw|hlw!JtqPI@*J|Ue1UL!mo RZ)xH(Tb*+QJkbym{{j*;Y5)KL literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/tests/TestObserver$TestObservation2.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/tests/TestObserver$TestObservation2.class new file mode 100644 index 0000000000000000000000000000000000000000..663d56dea50622a0207f390a5dee2c6fc6009449 GIT binary patch literal 2267 zcmbVNYgZFj6x}yGE{Riv0qx6LTZ4vJGlI5Spj72igMm;6Y3Ykj#w(0YX0m1`RDO|P z`=ZiztuDWHt^SPukgo2TBql&s!G4%I_i^^V=bpRIy?_1l+aKt`6<8?@<7yH^7)xRt z*9LGsMf-jVAK-?>%@ia)Jb?*JN=!v=A4yCP;NuiD+=}|QCGMm!gV_}3FfVaeqA0N- z&{OwaflDP-*G)fERXflhsH*8IS~E1mof=!Wm*$L(`zuS60OtMr zgPIrWD*o4$Z`ZbzZ#w#&hT~0w`ok?d$X*q=-fbPbT61)x?i$PGRXtQe80f3~mn(tt zx0O$P(%5msEfv}pxu$H_4yOffk7@!;wtMvrK2r z^zEqM989Pu0%P6QI-H=5xhIyYg|_E1>fUJA0)y?%n9=KO8yX1B9=cPMwJuChU>9ZR(EcZtCUABV~p3NWIuz zAaRdjw2nzy6mooYv<{6d7*@D@rM-oTp@iyD?t7Pvss6eyZPB$q-gnnGJNg*k)6 z8kX^?#EJ$3s}0D1=&T93k2Q(UG<=SAfs4nJriRz>y1>Y>#4m7~wK5S>niF2E&Bk#? zyZl1K8N4c>AB(B25{WN0e1)$izR|FOZzU=MGhIktRt*%x!SfR+bRqVY<+%^-&AK1& zhG!jBUECI!>H<(Lg$JF!MR%K}6UqC9M0mI4qG}uOLUP1*s9P&4jx3KcOR;1lv1DVh zWZPoN#wSnVbx1X?DJr$Uf#=!gI%bW~x82RjPHndUBl{F%dA`zp6~yum^p#eN#E$1Z zuGa)6I*A)Bqx)~f10=;33&YE>)Rw*Pcn5fH=zET%d?t!Tw=arAS8DM9hD?Q*L$GGK zbn|K!$RE9A)0az~?%Z)Jl|0}Mr5QT`-w+;&Rrh`6hO2f}E!vI~-GfvE-NT9dA@AJU}StG6Hx^Mw5(~`Omy#X z?kwBjykME0<3SdeXia|8jPWcI5<`+Ny`W|2t!~49Lc-Pv9R|tU>Vom) zFxuR&PAkaSm;V{*@7YMiA@;|E1<4jXSVn<^KmEXXh zfnA9rD#7>tQL8;O4kU$0E2RC9@ywk&=bn4+oyp(-eEN(WuHl)3>+o#M+L&`-Vcwzn zhJ!II*tqGy#=;0j@tciX4jkOJamRs++j{4&je9ok+jt-_wjq;ry_QJz+E2qcnip`N zMUhlXO+QIw@}tKbJ>uR0dW=_I`mcSjlZH)iQwC|Q76qmQ4Nwf?Rx#;B#iSjlMQO&i zRAGBZD!*A=uF@=UGy`b*QNuHFd48n&CQ5f?8U_M|dtnr&WSc8ZZwlm>;<^+Vt%Q+W z>$GZ8ZTPh&E#s9q@SB^y3iY~c%%?jcNiI}m$MaPxTVdkWWy_Cb;)Sht)2nu(>htvt zFQpQR*V9AlH2PCz=CgxPlnml%J8X26kidmr8x| zR8tj3jm7SX1BzL@BskUQYouI@)0Mar)t7ez+13>%C2M!~Th$Ci7gfNi#vK*Nl~Buh zv|o$sy2dshx_E>u0+XiXz4$+b5jfX#S&I#qCvrREqExJ0JjU-Xe!-F+&alzG?;;l` za8h9D=L=WtF*hZd(;=SxFHrL?ma$^vslfct6Z@K_5pKQqlD9=*W&qCMo|1|U)RWbS zDqwHNYRzx4Vh)>YRVInw;Nn|f9W3#QLG8p_b*nU}xBu&g==B35__zt(B^=Lk^_J@#zcCW`^SeF46)_W`Vdf$<+isFL0L^4aev)MI?bDE_I2`@+;^^QVjc!vn*1J)CHKWM@ literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/tests/TestReasoner.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/tests/TestReasoner.class new file mode 100644 index 0000000000000000000000000000000000000000..737207aa48e61b6e5d6a7c51aea60c966950e910 GIT binary patch literal 5693 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 literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/tests/TestTriggerPolicy$1.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/tests/TestTriggerPolicy$1.class new file mode 100644 index 0000000000000000000000000000000000000000..2a785382730f56502e0b6ebaf272406062a306b9 GIT binary patch literal 1579 zcmbVM>rN9v6#k~Sg>|`D@fHz90ZS341r%ukS_yYb_&n!*A&=|sQa^{>fGvA!=oH_IT_m^*oV-!zybmLw-x{%Q@+=i@9 z?hy_5b($Qz0FGQ6@;b&bp^V8SqA&ha#{)dnFs0!ULn_#|{DB<9bV-I>c!8{2KCjBU zaHP+zdc)@B&?&!Iukb+nfzK->E1p%WN$-VgTjpMop}oB41luyOOah#-94nY(n8}b;2=*G3ulcp*@|%s9Yj2j{o3asDuA@Lgk3jC7ZKqoA zR;vu`HG^JuL(h~emg0ToROZKa#I7*VgFXWnk!BcdQNq)~F^p0~g=UQlX5A;%Ex230 z^mc^`y0B1MKep5f(+vDf;K$506buwGqhZ#-9QqiNgh?-b>3RF(2MfOn~kC_DiwCD#o7Pa!Jtvxs?q*oxa5XWA85P64(0k=hM`tmPtZTw zK>@UG$#Mn9luKZ9jQJ|XsztQfA6Owk%( z5Z6c=k*?!9ddXtAiM}SnFM0suZHt=JTraq7s?+B<}wMh15=K(i|}KaV8gGL2G1B1PCS(zS?38u24tk?%ig W5N^<@(-B=X()Smnl#X2h literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/tests/TestTriggerPolicy.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/tests/TestTriggerPolicy.class new file mode 100644 index 0000000000000000000000000000000000000000..bfd12d72a3f210b9a145c1e686595166cb79a866 GIT binary patch literal 1406 zcmbVM?M@Rx6g|@xwv^>VDkuo}1=<#2tNt(wVi0Lk(*Uux#9wAv#xi6(OLk^Wcq=~= zO*HWVd=j6+cxT&Ch>N0|?46xEbI(2Z+?oCU^UF7+v52Js^kY5;3%4xX&XKQROwmHg z!h(f63}CRUQu1)!ca`FbVf5KXW$k6H@w&R%*m%)gt1+-D!_aylm3F0Wx_-pdK>7#6 zpbkZ=#Y1=3=M3cCs}iUr2)dQzeEx(^OB$Rn(>u`bevg92up9Lk3Gl>X6Gl zhVe)y=FGXC$Ca8Zm&*+I3dMhAz%Wohl6s$O;W6auK@@ttB1~TN+ zV1_HlycS|`O3-7|PaA+6Cs@$A=(3>R(W+tbh&Y>l_E)4|QBj#s=<8v0sLT`p)e|`O zG0w~}&Y1+Bo(Sv_nEiWTB{A@7l76S#&>>wV{hr4VXX%&4H97&QScd6X1R(PP>|Ly- ZX=q2nJc($Y6mG_Lj+zU4=@(|)z%RX#A8G&q literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee$1.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee$1.class new file mode 100644 index 0000000000000000000000000000000000000000..6d00a82dcc07297e9949ebb9bfef6deed8421bc2 GIT binary patch literal 260 zcmbV{O%4G;5QSeG48y_^ENrRRiLIYRLP*91+NjXd)0pm-xSE9nIFx8VCs2!5Rj-oo zr5?}Q9TB={#)xAi0!e!GMaEO5S)jR)#o06W4)P)e>gmo| zY1op=PnuG1($#WJ-YIQqJ{kWo^y{6z00Mnx3>PCUtz|3FdWVpfW=G4-fiovC_%{LV Zz%SujQTPyHE2Hu;>Oqrm7pR7*_5#wXMX&$> literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee$Engine.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee$Engine.class new file mode 100644 index 0000000000000000000000000000000000000000..da46b8618ae7b091995f84a448a0102ea1fe78ef GIT binary patch literal 3063 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 Ym;)a&Yx%wrlL&AyLsTk)cm>Sf0TZvyEdT%j literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeMessage.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeMessage.class new file mode 100644 index 0000000000000000000000000000000000000000..0c0305ac80f4d9794f40996e609063cdc6a73a1e GIT binary patch literal 1384 zcmbu9TT|0e5Xb)~p=l|lARr3$g7>yu4(jN5VQ@+*SZ#qJojQ&WOi0gQuuW<%j=uZs zhw#N$ozY=NM?Zj{#808_Nn?OV@FnN$=InoeyJwT1zrX%~idoF1q2X#0*ZPq_J`Dwh zB#KE)Gi2)(T`#RxwrZ8N)y6{xR%IA0JGSQ=w%;_`flvV?7&N_6YE;W~Vo7=!LuO-h zeRY%Kx0Xtq(x)&aJHqpf9l>z(S5_)FVA+(AgGl!`N<h!m?Z9HAVT)Esvp869G3|Uvw;ww?xOViNfl1+guN9ePg}B1K(;5tsx`*BjvB8SrqcziiSZB0L9`WHC&|bxKw1dULV&Uw!b>7;KwBrflVr(eCY_mu zgjTARRz+=V)heh}sTQrMv{hc@oYrri<5&L$Kj=T9KKIV-?j$7agzhfj}kbGa~fte%q9@Q`2?q5Okh1;O5m%wAe)yPupD2j$JY~h1>dO0 z#ROi(YZ|_p;QUMS<+tkbZ8^Av%&pZ_4R6Wb>vReqT0k$t^!f;D`8; zY~Gg5k2PGW$4?V@1TSj%nLw;)PY>j*sf<%HGtRW-W^$HoWNgE+N_Nh0GOn$g zPQH{gY$uZ)whR4M(Xs~)9_SNj47?L)9yp_))iWixP|Tb(a;{}_$&B3^ zq~vI>Xbbc%eKWV}`Mkgr;RVxU%kiOP3zxh@OAhX)hHPWXI!hmj7cFbDG%c_zb&vPo z-y5ieuF9AHaj%Dm&7$pGTkrz3QyuOqE|ZB(u*d|vT`w|3}*fOh~ZXj%k;{Zola?b+G4Gf@0>N#u8%8vIq4kIzxhPd&F=YeVl_9);!g9GZ1lq2*p4-rFqW&*v_<&Opej9q&Z4@TadvPjvAN| zdVM&PyX0?cbK*7{o0B)O>@phfV)@7|G~M_REB=nA=9Rb6Jn|7%Ttl2Qx3TJPXt}{n zL4loE#xu3@B=XHeB+)8yc@p{S;a_O{Y@@cY-Iu+EPkEGh&!5ro@pbk*z_^-C1(?Tu z=Bxy}3CH{6U#^ZQGiQS1^K2S!DfjS8^A7)E{MO}pj z6N|rj)@RWX-QA{+aTP5dp*v_5xG2Q6|NTcAM}D{h%`^+BfJPoU|pwWlDzBY<{N}H@`yNpE7 zO+0js=DCT7=PTeTs$n0c_oE31E0VddVyG2(5>FAWtboSKv70JA7TiSf!r~4UEd734 zbWgi)hn}`r`^<&QSSiQty~-Zfu)I8yYKhP~|E!W*gE%1$lUNq3@Ok?40AubjgXO3q z*+~%*hLE(9Jm$6v-EG*fEGOxvdAJCo(q7VF>#E(&)oyRKE9C9uALCu_t>dPy=#E%x z%sI4IDh?YFTwDLtocRQh?Odpc2bi1w!-7acf zhJl9}kFZt%z)$C$eRZNLEJvA@?eO1QK`g$VhYNEv);5q=HHGOaMPo z!B5apxQaZkUeZF|3Vx zHZZLzW`gUYlcH?sLM!R26eKkeN{FQ Nzgib?`96Zu{{dtjF53VA literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/Marquee$1.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/Marquee$1.class new file mode 100644 index 0000000000000000000000000000000000000000..82bdd09ba5796ebcdab0910e851edf703d8d549b GIT binary patch literal 246 zcmb8qOAY}+5C-7C4TfRi2o|EASl5pLjH VN&E>hHPQMky0K^RF3^rs=LJI!K*9h3 literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/Marquee$Engine.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/Marquee$Engine.class new file mode 100644 index 0000000000000000000000000000000000000000..f99bd2471d457b2a8ec939ff2e175a8bd68e4a35 GIT binary patch literal 2951 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 Z+VS^b1LrEQBPRd= literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/MarqueeAddMessageException.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/MarqueeAddMessageException.class new file mode 100644 index 0000000000000000000000000000000000000000..1541d735efcf3fc172b398a9e934826d547ab229 GIT binary patch literal 798 zcmb`F%TC)s6o&sv(l|BY5{CqO0Ss(H+A=CqHv}Qk3#&kp5+Si1;vpI2OKOiRc&u(f z0*MFcLm|$@5tSOcK&mAl`&{Omf6kfT_cwRQ;{(=9sM~mn1q+KdMP8Ng+I-&_^VY(W zg=L1~jtZ6DWym)+ju{GHB2O~RwpAz()8JIbU2*DD#A!!8;U9}w8Gjrs=z&TY_S-V$ zBGxic3HM|mLYZ(C41L~7!_Lw7E>E@c6Fv|=KM?VcRLVWiJCI2t`tsXFPY$(;!WKiV z(LNVH1@}eR=N%oZu-`JO7;WNArWou_l*T=|uZ+Z%f3r6Ymf_>$X0DDeiSFvi6`tn` zH^|hOfF4LU$YgGoVWYxO|6A7Q^z2N=COgHj^<3<>TgD2=tYVGf>;LE;L-miwM?ExO zF&xU!V|f2mZzp=1or^|M(or@5hWW57gs30qxTBd6U=!mpf+OG Tvvp%85#XRoR5}Fla;QB3lHJGS literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/MarqueeMessage.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/MarqueeMessage.class new file mode 100644 index 0000000000000000000000000000000000000000..6b060ae202a4f1233372be64bcf517bb977e9795 GIT binary patch literal 1370 zcmbW1-A)rh6vzLwOSh$zf`ABA1wU!a#~6*qC?P4eU`-2zZAgq4WLPG!xZSP$Vf5Z> zAHo}NHPMi0^Z|SlpF%yetqWYj&F-AD=lsv_oSB_pf4=>Mjs+}cVc>Qev;9b+n1zN? z8s#+R81l`UX;#*1JB`}TW#ErUSpONM(d8kX1QLFDqF3m4eHr#-815HK=a3dchC63H6*&y!f=ZreczE7DWEfTq+!5|R-`G8r zR!GOISg+UP8JMB4UN%Js*XR#1)Pct&(#U|JUma{@F@*u-5_^#B{0V!AVhA&i9U;F` zpfO;Ko)^h_Pih*y%jF}ma^?rLuh8|SLgoV|%U_@uzC(Mi>-rJ;%y*1^{QLVeMe7)+ z=TuBIfj(l&ku{0}ZqU1g%eX|}$4NO)zKNKZYEax1`4^IJT3Y?Vpp5@3#a8ICtx~>X z%f@VT1g2_haqT=Y09UE@G)-bAsYlVhDr%)Vr;CAjuJkl{Y||7}bDt79gWMo^g{_9! z9khaFROCOWIMjhT%^?l`X*T#Zv6v5Kpm|B literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/Switch.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/hal/Switch.class new file mode 100644 index 0000000000000000000000000000000000000000..b4393071651f2e841283bf42817623055ac27da0 GIT binary patch literal 3800 zcmbtWXLA!*6g^M2C0Sl<5H+C_Lu3OM5L0bRuuX6x3_+$CNWxlrSc|1yv%7Lh@4a_^ zLB3=X(kNjj$+yhpM`d!}?%G-;F@Q53KfQL(yYJk4&)a|g{rwL#U@NXBa1nY8qcP+X zh#;Tfv`k>b;?wH&yeNYTj1OJ8Jda7~T_zI8y@KGdZi2 zcFJbjnXue+&a!3NmX1}nbJ9t>wr)E4a!%S#dN4a>xVb`)z|LGzcbs+_w$rd(8FFCD z_Bq4$kYRgZD6lAVS)bI?Mco`r_bCWsHD_l`w;)|3ClKv5Ov61O(3l$RIL)6vD=!7w zGKMLK%B4|h59^~v&LlHdPA{I;Z9|QN$ws$eI08E|vYgg!SC$MXotGuu)M7n*3&T$>YAns zMy{Z4P@y7#kH&O1lE<%RP z=T=9blpadf^$yu{|M3VTd9jd_^kwHfJ&Ezk!}=IGUaB~*mv77;?obFxZ$*3ER*3)^?+;7V%m+%85V#qECL(vVK=KDk?HLM8$y8I!jQ#U zDVzC$>74Y^f^msVZxcvlJzYCuC=qG#bFoVi6T|x&J^=k+SK+BXmcW|ImLbdA)Gsgj z2imq}YxocY8aCr;)%3>jk%n%3tl<-Us$mlzWy&eZ>?-JXeoD7xmn|n__)Np+I798( z6~h-AzQifAl0C!wZF^8bQ|E5ckV1z56}{9&mG1J6R4UEm0(tKWsdQIRni@uME{3l( ze2s5>^9OkyH0;4%4f|BngI*2$aX`c4syU244gHFmBX~l?Q4DH$5>IIu!f_2J6kS=> z4C9oB(~63P6{3%iUY0o)LtACaV_qP3$+Cy^5(Ao0H7*@TR|>iMj`Ed!2(0u#Kik6= zX%|>uUE$SRm@_Ju{UnjBqV9Pp6+uFm$j(rtOFr%i+nSKJ%cKu)@E#UU$tz{O=nRgT zj8~uT@ID*wxKGtHeR4LUETN)hjh80`GT{>PxatYj$$dRxgR{82Mx1h%8$YH`U_Cz| zHiDwTkDG|fX8>`PY@F+4A4syt3}m~NqhtL3iSTz(=M6+VZz6Ub@s&G%L-S9ZjG&8c zE4Kj4(1_(&h!seCBhLuiu$?2CV+S51WHXCtX8`>J?F82bl8KvWNov=z;40R1CR@FZ zb{lOY4L7jxn(8#F&d*r%H`sn79z$^IB;9g**DwS?{_$Tk*2JU!1r$cD&G^GzoPjT zmI-{%k=T>sV0m zo90|#O$Pvd+^P1qs7q|Vg@+=jhUrFv@v20$WiFyEIEX`@2h@kV06ts`xQBpy?*T}y z2>`2TUMZmB9HzN9bjJ$K6sr0Nt7;Jr)kUDn%^^hCn+x@7fgh`U=&y@Fi3||Z{GAQd zn(7N24H;L0L}?9-tAn(*meUM5J?6nI^Wzx`Qidz)bjox9SjFkOT1HNUT&i$NjSmp2 zU0Pr3(lA{*br+XTviOusd@t?-xShr=q!1#s*VEY2F zXy@kZXs?dn#Sl((j`%3fdbfc@JAD!J mHN+P!71Sup_&hFn`;vHOPQF?>(=?}1kwC%)p7m1nx&HudTQuze literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.class new file mode 100644 index 0000000000000000000000000000000000000000..73870b0015e70e2cc7bec5ef63cd1eddb29ab17b GIT binary patch literal 1808 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 SK7vHi`?iU_t0^nNHU9(u>jxzO literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NDPFactory.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NDPFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..c8e4cb017abde62ed192aa0110b4110065ccef6b GIT binary patch literal 1321 zcmb_cOK%e~5dNIkrrSVDXnB;Drcg=}9@`3WYQzCTrHZ_yM3KVH*;t87;*EBliu@4% z0XHsiArh6~&W}Qj^Jt;HMO|q;Q@ZmOt!%gdE>POL$WB9C=dHB;n#VqM@XvZxxCllzBKz8 z7|~rBFcgYn=x|?)z6_kU=yN3kNA?Fjr#4izYNhTBwd@6s60*~6d45|4u6H8*ky9>I z54o#7e{{gG+!6Xn1)3|D0)Eac?sXQYFppCo4a7nA>ikuGPkXM{qomj7KlNWQhRW4N zn`F;mzy0WnftH@4lG`3#40&4 z#-He&F~<4acZ9x>K;KiM5Rt(*h$2KgrwBL4hvHPLmD u#y&E5fjzwZCw?AlxJ6nyqD`_$gIV;ffmCP0-dwm%XoM25i0+Ua!ri~TLU|DY literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryException.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryException.class new file mode 100644 index 0000000000000000000000000000000000000000..246212d09698a64c220d830a377253309bfec4ce GIT binary patch literal 476 zcmb_YyH3ME5S%l?h7bq@L5rveAh-_*O2ebF0>V-Hi+yqy*>};|j>2bAAyM!Fd=z3G z0u+djEp~V2R&%ra_WtsU6`Y~dWK@~x z?sh1vlCnY?P3dH8T|z}{XWBi=!IHW9Vy@@0o|a@yPe8DA=eJFPW@IZD>l><#9sI3v zUa#0f1FHh}|8G%X_veP+#&HObPhJPFP=C(ZXVhojbIhS_8cW*6U z?<_kaaK;Y4{R(94l+jH}_0H{{)EUIXjK(Tp@Y^P}f!tA9&hMWLzmbKYrag?bot~UX zTZWG{2Jb+B*XF0Lm9dT*!(`3MAE`{73^&SngSQ!PlHusty1+2|Kg0XpFy!mm%!(q8 zr4AWBJvP*_Ige_i#(K_-CeJWeZ;bJpRGLT2lO0BvY9v`EbU+)IBfa|J3hd|-xoZ9b vg^%>A6C^HByhQ0Y5ptL!=?}?ute}Bu!V4p3R4_w`!r&#U!!KqDCM5I43t`e;*_4O9xRvpNFqPVOq$=w=_PN6T6QtWJeff(zu+Tjg7hYe{5SPL2|K=Z7kuH8>L;~%6L_9 zrEB)eRPR=0O`UBwZ(Xrh^_i-;w5flC33nZ_)pe;h`(tDt5C}cAlk_7e`askx3_4A5 M9Y2I&+&zqb0WUdKmH+?% literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryType.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryType.class new file mode 100644 index 0000000000000000000000000000000000000000..286630f0ee95eadb9d2ede8f6b28ac474268e881 GIT binary patch literal 1915 zcmb_cU2hvj6g}hhS5l{Gou*CFlr9a$U!_Z2+ENkH*iz?>2hZJe=iYnH+&i9sUj6m_ws02HX}y!yKGgMtx-0A6Fa3$TO{>VGFa@Z#!<+ z9Cn;j;XXAg6Hk8XX*@j<)a?0GS%$T51y_W%q*n-6GS!H&}<6W%p#(|br1$+xFm zN;N4krvjG`O!I;eFhT;XPc8;U=!c@CZa${$J66W!9TK9_4dhAkO);onzaJS*yVPk1?t4{6XVZ%jlv>EcG~9`Af#<|m{o zL=O{i9_zS(i=g4le0hDUqTi3w6MRNxG)Vdzh|>C)=)a=gHs~Z@Q-8m~8Y$nx6QcUoCnqtJlfZ2l zM7~CHJ|u|&d_i?mR5gr11fhtU-iq)0CbY4iRtja7ep0U2r00rz`3vj hF$I<)3Y?ciWJ>9Hh1^*GB zNi-TCd^Y}3#@X70m>8ezUT$Z0c6a8R`6m10=htt@;0~&J2v+j&aCHd3$M-z0 z;kt{GiyJO(y0}FcPTDFiRb8wSM)$UN^xMdEM4}>1@OHG8W-AnNEMvmUnoNCR64_C) z-;^DpW$dd?H}vbNu0P#B@Y6(vv9G0SwHuLXsyK*Fq&f5VqNd!IEhFWw(4r;HVYT!} ztb2r9{Y)oqnW%t4-B(&A4+yWz1B|(PNXTw6G{RU-X}Onn8qyqyM#z>zEeb?lbnRUX_zXLG;1EarGC5&H$-)|htAYl$J zOwUrSEfFq!!i#|c;UbD4ka1kv+}I?%8D#q%tsec6^+DT6(IgDTp_E;2&GKW*{*(Wh zEMcUch~V9>=wgMRha7iup8tYv2bSZ#cf#R$f^CFJ*6zaL56D+OgDPvE;GFZy!4%KK zdFI}@B$J*_`W!< z%>z*=xY{Gs=dmV~yGibbd}=(;#vHxh`^Q$WjF%NWLP@5%uwgb22&@0K?M)o(QHU+V z*M;>YtZ&a##?SN919ru0`8);qao4<#;>&_OhKO4cUzO-10@){-*6uB+wR3~uT3~=D rvKIYjdV>{-pGnRiT$Ss*E#oQbk_)gVD3JPN@imExc!5y7zgFxo7Q7(? literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NDInformation.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NDInformation.class new file mode 100644 index 0000000000000000000000000000000000000000..e5b936de0cbd45a3d331f3065634b54cbb4cda3a GIT binary patch literal 4912 zcmcIod2AHt75{zfU1oL}bC{z6lQ1C!)@$R%(2!zN8XJ=oFot46YiL5oyW`z~-5FGWCTzcG`c{rg)>*dYuNT;!o>DDsyXf2osu!3!VAAGg*^MfHw6<1(>It)qx{E+WjcA;mpG`;CS z(P<1zbSjWwCde$9cLQF@8nc-W%>~n+1fTNKZA_XbS0=*rT#<1$cZ6c%=|Ex1$T3S8 z?v)I)Q8K-Ku+58s3TZ3O=pjGdQN;xP}vW zR^Z--Jn7bZb=y3kH*D%o@Gf=B_I$(kEyFkSoeDmy;dA&rGbvDBmq&e-(NU8rmT8dE zS)YI1`VP|@b8OGlM_s3^YdDEhtDs!{;%<&HG%DELeQqmBp#E%=sSz1Yw8C7ORrAzcz-M zz3fnk&nKfhwn;}r#3*8QB*G}mqTSi>;=1*);ONe1o!)M`EXcWM3hQa(>src}a|@++ z$@Kra9KNC9jC=^+#8Cy`R`4BxY$K#~RfcFVoom@+`9*zGKe5obS76K;sytyy)zXNI z;ai4LPz_lqw@jgi$>P-|3+NM5TD*GNZn7tpoI-&QD?31H%J#nc=3K1tnd4@O9j1R{ z--8bb-1An|N_J{}`&-l+Sj(u;41vuz3tfZJJ=gb9*$bx`V`HZ5haER+me=uwHIp8w zz7zIafw}3ZVb#@Ec_Zi8zQJOAO(TxJo@9TS;hBCvKiMoh`l^ek`=n8cyg5>#rzzIr zjU}_pLiz?mc)6AB`Hk&-_-4VnsZX=UQqm)Bb#JADI=^;QY+HVd1xgd_a4s>K?V4qN zNA{LV5ljSI9rBIb{;kGXLvyVLYtCdB+*x#;15zY(e!Xh|6vSk=<}4;#cR<R zq3Vlhp)GS-=3clsY%PLM80ynL3H zsKj)F)~rK0pf<(>I)TRm+7x)6;qOGiZ+QE+^!j)F-1ZaGVITes8-Ia^zv6NH zE%06^`t&gJUe2~)AVB00wlbD6e2eEBsec{f3c3_LMIy7nzGgkquoeoQrjkY$3GQG7 z?n_7n;9d>D-72w-(eZ_+@N8!I9Fi$R#{3+_Nu)>;XP}TI`#4D8XEETd(YzXgMb!x0 zUd8i{=texeEEOz{wwN?kKE29!Cnr2kUci!;yQ(r~pF#S1o~2cuyKDD47_n4$q9Y7g zjA{N8TqaPLnS_#t0a}A*&i~HSfAE?76N~UKWbtnX_dj?D|3wk6VGOV1d1mElA@Hhb z!W9v(1uF{|+ZY%bwyU+UU5&yfgY^h;&7dg^Rv4?!`Xz;(u3rPMHZCvMFM~i{so#;0 zWINsy#u0yD923;Kg%~vt56Cz&WYb9!y=VAz31=^dYaYuoqDI)4v@EZ|r?+4FZg;%> z(t`NQ%sPejK~{%;zDh|$@b2I~Xpth4m?2V_FEq4@8Msf(M8B9-18ENL?+CKDm47k_ zXEZT_OM*mzFdwl1B$>^vk%wA5P+C0*ycZb4&M0ly6I|);ar)FeJorjRI><_O5$R!; zrM6*KG5%wsbu3Pvcn<3_i)#gp8GZpPt_P!&7%Y}xWNTpDFz0IbR@UyV2y!mILZWsy zfbB^fp?ODeG@v1DotRG8<`TAfm?`FCiMR`Cu@o!B-B=}-VXasWL$u+rXvZU#iqHIKW!oTAK-rgh5!Hn literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NDTimer.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NDTimer.class new file mode 100644 index 0000000000000000000000000000000000000000..4163494ef7476bd27cf1d6f6935aacb2d13cfc2e GIT binary patch literal 2558 zcmb_e-BR0D5dPK%WE>>{0|_l{suJ3O`4KK5q}WXYwjqEG1RL7qrX#FVqePZm{ZR4% zo#`v|x);6f4@st-X)im|cW57_?MgPrnQ>>xjCG-N&h9z;eY@ISoj?Ei>-4yl& z5hY05xw26c4q?B$G#h3)!coV!_&pg=jEED0Qh2HzYpSVPRdvJigyZ;iPw4rRil}>r zZSk2NabkF!vQG%{5@%;ctQmnPqaAW)F0dwJ9Mdx1gCgTPMkQ>?D4-}|TgDD{2`f!M zmlexaI7x$iQ@*ereqzjwR{Nplx4h)8-#2NT4RK-6fcN(i0#*P%?p4z1DTgD6g{kmb963NE-ihIaJ^+E z{9ekLM#es-2}>m`-jP*0KF8^y)yyr}&I;qs^-hUxkovK?HO!;DzBb zOS@hV`IoxdCeD&};GFc%;ZsrJq)D8M_I%4~lz`S%^v;cOtBV+%_gbYQTz4Wh&t329 z?lz>U3zoWRSF4 zlkne7!t2pY@@GVv46iT^Udk_UwM{y}QugK*2ERvNu_rV3?Z1DusfR-D#4Khp&(Ui5 zFo#QwcpnjZfI(WtC}nYr@|dNEn5Q+QXdMf*fhF3+8f}ICD10`>{Abuw;Msc9vk3B- vgUZwc&u;RrK}6Uy;?;a}MiN6Ww8RlsfQ_W^E{_SGjqzpf9Ug~yoJ8b5q-5I< literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NeighborsDiscoveryMgr.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1$NeighborsDiscoveryMgr.class new file mode 100644 index 0000000000000000000000000000000000000000..c28a876f21c474e9a6ecf81a18f2c7c5bbe36aa7 GIT binary patch literal 7468 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 ZW)9hY2`N5f?5*TaoJl@A_&ful{{!7~($4?@ literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1.class new file mode 100644 index 0000000000000000000000000000000000000000..757ea9766ed25d231e4b0b978c60986eccc39515 GIT binary patch literal 2913 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 literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2$NDTimer.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2$NDTimer.class new file mode 100644 index 0000000000000000000000000000000000000000..288d3e39325bd54be4e5aee4de9939289c6f3ca9 GIT binary patch literal 2435 zcmb_e-BKGj6#is~tnF?RFogWJ-B4PLAuJ(Dlg0#MY(oLt5Dd(;HyyE7%_eKDyFYI7 z0DXvF_X+w#l4)n!%g*#Q`W|hM7GskccZST^7dn#8O5dmBPv_{be}4TPaoom!3S%&n z7{&Y$qTkf88r?}@0e6$Qhx-Y9n!*D-)bLpfDLhi{Tmp*;JWk;{mJ(P_;R*5ytY|1` zC~7D%T-+%=-7D30zuGSCtZx+=*apLef-C)i%V3{7p>zpd6CAVZ)g&mL-zhp?&NOhK2wH3pweY7z5jJLUtTgdA803YfY z#}y50IzGp`h7BE?C^O_c{2v+8HAs9)N5=`-F?$89u7eP)@g@aPKOJ=+nx>qJ{P3`51z%HA5o z{da{`%L(<~JEBHxDN_&)hK;j^?k&=}a!*CIz@s4KRNA?m=|4Z(xlOCC*DX8@H!Zhm z`k^%amK&Is>xrm@nR}{^QCNIOh!&;W%!b-KQ46^Byuw>Bs4kCz(5SGdRkosXo>r+M zvXsKeXGA4FM!j2@p!Opg|3Kfz$u4GJgJoxq5X+7seuSafKXGm54bJ}rEuDCUZD5LR;x;Se4y)h^tDa(=@34+x88etAT8gz! gb_6kE&1e*($CYa5aFcABde`Yib%X3E*(t>S12Ry+LjV8( literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2$NeighborsDiscoveryMgr.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2$NeighborsDiscoveryMgr.class new file mode 100644 index 0000000000000000000000000000000000000000..92fb99377d498987052d890b2264d81bb6087ce0 GIT binary patch literal 7479 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 literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2.class new file mode 100644 index 0000000000000000000000000000000000000000..9c9b8991e6822f77214bd607ea88c0d87feac6cb GIT binary patch literal 2738 zcmd5;U31$+6g}&F$Wff6xD72SA1(xNT!=ymf#OgoaSLf3C#j7Y4LqR8i=$#`gS0Nm zJNz1k85n3i)6Bp-KdQsM@@GqCVlsZm5;yqJ#|AzzF^!uBJ~gmmVipAxGq}aWZ9euH51$*@G;qhj zT>+z1sCd2%1yY+qAj6G@6Gbu-m?;%DgKt&nJK9r$zmz86_F={tdpEYCk^SmkC=-r25LP3<)zi_d#O-73boJXs35H?u*3 zuZFy+3#)bcSS3}H1z8WJ+;RekSXHkrKIH~kJ6}^>PkN3BjAfUq0^=KWfxukR3uLM3 z@5!*@>@{d7T~w~qs5+s?>(1u5-uEa_Tce~)1kFh54Ham4s0FTPPrcn$zOMqSd=ydW zJHR}9W4PU0PM7AyOGw;xFYxpYN{(KTW6|AHS+%tuQlhT@JweC_Cq`ZBzNE28cSs%H z?I4O?L_xZcT`Jyp9yoD=Sykz3#cRC!wz#a}Zr22z>hIwtJ@Dg4Y za7Jq7q#R>wC4qBs@-!T3N|pUkIyHgvNNu-UEL+>=VJC%MWKz`HNel~=5O+st?kRt^ z_wG|U2<)EOKqqd!(%cD^R<3H$7a`lOx;SuU9a2+|`_9gYOO0CD&!fF^$l^Ui{>B0L z{r}ANq&kRMUmTS4UNZ>zQy0IPh%|lIafSXc<{|Jr{ez^r9|1H|snR@2`>!BF;}u%1 z(tnGf**r$VPLH)P{uiwhc(rp9cn7c1bE-eHubP+i4aF(az-4x?+t zhr^O&i;s~0g`Nk3BEB97O0pLeY7jjo$zo4}I2IkLM)!mC;E06vs)K`1Sq zVlscf`DMPoKac2PjA4c>Lr%!cw)2(DtrNmip)+ZW)=RPL&8qb?8>)6M{_wIjdqWtM z2aOwvw#x88_>hi`kJ8w{^=VN8+h*su?6iC>-nfg_1=fpNeO2RD&*L@!d2lo#fG}LB yik~_Yf&{|j34@){H5aR`RFUxhe++m|1ULA#UiuqS*2nF+Fi1X6eZpOe?tcJm>uE*+ literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery$NDEngine.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery$NDEngine.class new file mode 100644 index 0000000000000000000000000000000000000000..fc66f86dc35a4a6b7be4d211d32368f4c90df76a GIT binary patch literal 7378 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 literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryCommunicationsListener.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryCommunicationsListener.class new file mode 100644 index 0000000000000000000000000000000000000000..8160c33a7308f9a88518cc659122562a75ec7e25 GIT binary patch literal 4279 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 DszO>E literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryOriginal$1.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryOriginal$1.class new file mode 100644 index 0000000000000000000000000000000000000000..1f137c2234de9d5637d9b1f30958c6915e1bb8a5 GIT binary patch literal 7040 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 literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborTableManager.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborTableManager.class new file mode 100644 index 0000000000000000000000000000000000000000..64ef71cf15f00a2cd8d717a8bc2cef529926f3af GIT binary patch literal 4958 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 Z13ZwB-N>T=%u;)~zbT#NSpxX>e*r=wN;Uuh literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDUException.class b/j2meclasses/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDUException.class new file mode 100644 index 0000000000000000000000000000000000000000..5f6e6cd4b3060823704efe23dd86b0f96a55b065 GIT binary patch literal 775 zcmcIi%TC)s6g}glNpRBwfl&G+;TfK@FQ|)_b`?>iKqSO!Vh_n6d&U~u2tJDqNFeb6 zd{ost3T>q(>aMotKF(Yn-FxOf{F=imC6z`HWum+^t2 zw5PPnJ~6Dd+UMdz@JQ%B?_^f#{_ZHU-eo9$F`;CbY%47f^0+7Mk?2K))Y>KxQCC>y z@+YvE4OGf-+Lk#NHj}YRc_?F{Wy)2YM7)#h&f)hXo@Xjbxt6Lw=ouTTG%y#^UhyQ% z`N0#q{|i0bKmK|d$Rtxn@6r^p%myZOEsP97w^oYOXa>JyavR8R%5}T=PtqO7!!Y+Z z-RJ!5Oxh}ZEHKo^QS4OFK$F4y*r;L=ORjdA;pD%~&oJ|+%ipRn6k6`JN+L<5CTX_D zJn;I6T*LWD(n@BATfi{e8m*&>`Z&TanyAo%xsTEB<2l(XWdUtvfqZl09_-{6UafG0 z;wGKiGcsFrZcw^K`I?G6yddk72UbbXHN2##F(kkwrYIvSOru8hE}Egpqj;7w5A~n& C+|f4x literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/reconfiguration/Action.class b/j2meclasses/eu/artemis/demanes/reconfiguration/Action.class new file mode 100644 index 0000000000000000000000000000000000000000..5ad79dd1f4ccabf1987bbe964ead4d1741aa0716 GIT binary patch literal 343 zcma)&%}xR_6ot>laRwPQJ_fVEE?KaGFeW5qOeDB9rCulHr$dGg(N}Zf1NczJTQRIy z*rYkPH~r2%?br9mCoa&(O@cH*mynk1N5gC?>Ofm^~3X`J3Tg7`abyE$4aF)Q0cvM$FPH^VF*VEot*qYd2P)S;jGtBXR?x_^tuoeQr@} zuY~Z}OQ{snd7A5`n9^JtVk^D$ZwtN+vUv0~e#oMKgx!p@VH!vM2{XhiMT>?ZgyRrS zSQ^>VDZ14Kw>@10-aA|ADY=Up5#eeJiX&ysi_S|Y>vH0EB0{&Bu8<}dch57P58-l4 z8QSoO#L!AFJ(-^^B}0Vkzf;yt6W*C>C^pjt2na2xPpggm4{ZRpyAZG*vKsK~9_+K% Isbk>a8`7VGfB*mh literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/reconfiguration/Actuator.class b/j2meclasses/eu/artemis/demanes/reconfiguration/Actuator.class new file mode 100644 index 0000000000000000000000000000000000000000..08dfb4381b9356621eac64555e7ea33990629706 GIT binary patch literal 176 zcmXwzF$w}P5Jms2x~qa<;UN^!9Kg!PO0W>@$2cxob`!`Z9?rr8cqlOuoMQO!-~2!C z&+~-=HkeeXDvSx!TEboj<7`h@ELX>dAFN_9t-6Q~&hHX)cF}7&m{th0L`P1>Hj{+4 zM8!TxXL@y$j;-{{i+1*I>gYKqtN#gM{)=zf*6MU^Qb9=|6v#tEO1}-W!YJ(m)8om?9K0;;%Gf9+UlARCY}E9&Exx`k~fL4`Xj2dhOeVp)Y6nc*8)d5Zfq9Ye}%0+YOgzvjXZ@S}=(YQg1W z76X?#hdW>Uk5BY*g>!|m!l}YU;fyd&oGUgd1{T8g?139?B=goMz2>b6oV2iw;mx~7 zO!hJ8!~NamD`8p$FXEkJ@xeXC+S_-+Z70zm_Y3{lM$fSk%lE!!!o{*$Jo4I`9A&;S zJ42XvsP~U5j+WE42~ICp8@8En)5Wn$EIXEpoljZHM_s6e%}rbOKn)3mUYR}y0D1$$ Q5r#n73dbcOoU}Pc->RE}SO5S3 literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/reconfiguration/Observation.class b/j2meclasses/eu/artemis/demanes/reconfiguration/Observation.class new file mode 100644 index 0000000000000000000000000000000000000000..42af3ff47cef9ed24d6c362a2ceda1c4ab748dac GIT binary patch literal 340 zcmZut&1%9x5dOwSqqd3%AEF*=9-zGxYC$Lp6?-k?b_|iYkLrgno$o5D$bwEPlSq#g*)n%ue43qsP&Q6cIZw+a!;EWXo0**|Y!M zY40g`{LKrG-!zD*4+c=u9He$SPbSHZwyGlC`(bNATE1Z${BvsDf z%6eRp3F8~qPE2OkNnE%~NENRGtHys*!pjW}sbgHzr?$+@MYN9DA`lv=su7T0D*zOm RXz4uEX`tBF*QqwpJp*61Vxs^6 literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/reconfiguration/ObservationProvider.class b/j2meclasses/eu/artemis/demanes/reconfiguration/ObservationProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..85935e77782acd38a711ca993d907eca4359cdb1 GIT binary patch literal 434 zcmaJ;yH3L}6g@5_Ddo`)417Wvz!NNCL83^Jsuoev6}jmpa+TVZ<3#1x82A7_3UL!b zl%c}QwU6&T5Bux;;}ZwC!Z5^1h*N<sP`+u$_ADhx9wW%g?ARy2|wK`qFKhXua9wJ~oWHjL09*+3b IuX=F&18U)gMF0Q* literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/reconfiguration/Observer.class b/j2meclasses/eu/artemis/demanes/reconfiguration/Observer.class new file mode 100644 index 0000000000000000000000000000000000000000..309c7440d5d7014ac5a240a0a0e6e242a3133d66 GIT binary patch literal 181 zcmXwzO$x#=5QX2=+NdD9@DPe<4&dIE;6iX8>sV6S1oG3vx$poUN=z%xVt72}eQ(~M z=L;k3FclC26T+h6aK3qVoeJ6-Pgt!tr&@JN#-JN{AuI=cqfC{|Iu#TILWX`Qr}SXnD~!|5P<#QI C%`t!g literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/reconfiguration/ObserverRegistry.class b/j2meclasses/eu/artemis/demanes/reconfiguration/ObserverRegistry.class new file mode 100644 index 0000000000000000000000000000000000000000..dc6a6bd284bfc8c043bbffeac0ab5acf74ad0c5f GIT binary patch literal 255 zcmb79F$%&!5S)uK(NrS%2QBmjOM5FpP_RGa8ZIOk*vkd{nuQPWQR1DD%F1m9c4l^F zU+>2g11yoH7^N5sOqdF7TjImT5_iM`>-nCXRNPXnt-MmL3|YyPH|C}b$Ewwhk-dJq zI15aj`Mr~!8pk>9bVUNQUVr@N@qJaQP6=%Oi0ZArbui0HnZoxdDQ^=2fe2xuSojxX Nz~eBWXOgf-`T;TqOQ-+< literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/reconfiguration/Reason.class b/j2meclasses/eu/artemis/demanes/reconfiguration/Reason.class new file mode 100644 index 0000000000000000000000000000000000000000..559370d56955d3c21c53e7061e1f22dca3c85885 GIT binary patch literal 389 zcma)&!Ait15QhJB+pTu1uB$KL%~doHpm-5H6$MxJKJCVurA;77_q{v`9(({FN}P5D z!IK2O;h*_4lg#JW`v*q2z;VXmFvTpzkwDri@2OS-vtmsfk`0+!E`rmhz7j|_)O3G} z59L}_fs5m7ZFIO17@f|S0`aX~vGt(PM%{O9soWEl&2ZUP)GW#AUjHQH@S?rId7(N< zE~r*}xl%0|<)u@VHP5>490hHSd{pGE;fdM8cCJ!)x^Fw#rZ4+v=h(rn!2I9M1g5{= z-TnwCh8#qSM(}rAZYqsMyc0&t+tH2Hwo>$EC;zzp1Z+pTt`qr6eY3_`xR>lYDO*`DWT5|p{B@;#)*4|l`#Ys1sFl#aO x4(d&*0H}iW=N=xM42DRZ{I}S>?_3p)* zBsyB})Gy`s>X}drhty|%JTK!U#C(BJh3I#LCZw=qw;^06_vhE?qfgTEoh=d0hwCff z+4gO@)vuax{r^;Zk8oB@)oEwc!+OhYtOO4U`)iVDb_p#EVq@L=HKz-igb=27k= G9Df5|$yW#f literal 0 HcmV?d00001 diff --git a/j2meclasses/eu/artemis/demanes/reconfiguration/Triggerable.class b/j2meclasses/eu/artemis/demanes/reconfiguration/Triggerable.class new file mode 100644 index 0000000000000000000000000000000000000000..48597fd743c96ea4ffea1f5ed285bd84172417b1 GIT binary patch literal 233 zcmZvW%?`mp6ot?DD_wbvS}+g5#)6epqS(q+S2ImJl`)lgH46{mp~MUu5qEQLPVV{6 zeLQb>G%-XNpc|kk5LlzKjEz7u8f*n7(SmD9#&W67^1vl&c1o7)_2jl`JWF<)RXkqg zbRk)g&g62Rb85#v9wt?7Ql6`V1^Vj`oAw2d{JFsB58QBC>7&YOLsnH + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/licences/Apache-2.0 b/licences/Apache-2.0 new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/licences/Apache-2.0 @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licences/License b/licences/License new file mode 100644 index 0000000..4e6f27d --- /dev/null +++ b/licences/License @@ -0,0 +1,24 @@ +Copyright (C) 2013-2015 Universidad Politécnica de Madrid (UPM) +Some parts of this code are Copyright (C) 2013-2015 DEMANES + +Parts copyrighted by Universidad Politécnica de Madrid (UPM) are distributed +under a dual license scheme: + +- For academic uses: Licensed under GNU Affero General Public License as + published by the Free Software Foundation, either + version 3 of the License, or (at your option) any + later version. + + +- For any other use: Licensed under the Apache License, Version 2.0. + +Parts copyrighted by DEMANES are distributed under the Apache License, Version 2.0. + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +Terms for GNU Affero General Public License version 3 are detailed in the file +licenses/AGPL-3.0 + +Terms for Apache License version 2.0 are detailed in the file licenses/Apache-2.0 \ No newline at end of file diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml new file mode 100644 index 0000000..1493d29 --- /dev/null +++ b/nbproject/private/private.xml @@ -0,0 +1,14 @@ + + + + + + file:/home/grys/NetBeansProjects/Release%20Version/PowerScaling@SunSPOT/src/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.java + file:/home/grys/NetBeansProjects/Release%20Version/PowerScaling@SunSPOT/License + file:/home/grys/NetBeansProjects/Release%20Version/PowerScaling@SunSPOT/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor.java + file:/home/grys/NetBeansProjects/Release%20Version/PowerScaling@SunSPOT/src/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.java + file:/home/grys/NetBeansProjects/Release%20Version/PowerScaling@SunSPOT/src/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager.java + file:/home/grys/NetBeansProjects/Release%20Version/PowerScaling@SunSPOT/src/eu/artemis/demanes/datatypes/ANES_BUNDLE.java + + + diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 0000000..ee6eeb9 --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,88 @@ + + + + org.netbeans.modules.ant.freeform + + + PowerScaling@SunSPOT + + ${user.home}/.sunspot.properties + build.properties + ${sunspot.home}/default.properties + + + + + java + src + + + + + jar-app + + + clean + + + deploy + run + + + clean + jar-app + + + javadoc + + + + folder + build + jar-app + + + + + + src + + + build.xml + + + + + + + + + + + deploy + + + + jar-deploy + + + + + + + + + src + ${sunspot.bootclasspath} + ${user.home}/SunSPOT/sdk-teal-120517/lib/edemo_device.jar;${user.home}/SunSPOT/sdk-teal-120517/lib/espot_device.jar;${user.home}/SunSPOT/sdk-teal-120517/lib/ieee_802_15_4_common.jar;${user.home}/SunSPOT/sdk-teal-120517/lib/ipv6_common.jar;${user.home}/SunSPOT/sdk-teal-120517/lib/multihop_common.jar;${user.home}/SunSPOT/sdk-teal-120517/lib/ota_espot_common.jar;${user.home}/SunSPOT/sdk-teal-120517/lib/spot_core_common.jar;${user.home}/SunSPOT/sdk-teal-120517/lib/spot_core_device.jar + build + 1.4 + + + + diff --git a/resources/CR_FDM_ND_v1.ini b/resources/CR_FDM_ND_v1.ini new file mode 100644 index 0000000..96717d7 --- /dev/null +++ b/resources/CR_FDM_ND_v1.ini @@ -0,0 +1,16 @@ +NumInputs=1 +NumOutputs=1 + +VarID_1=e_nd +VarType_1=IN +VarMIN_1=-2 +VarMAX_1=2 + +VarID_2=du_cr +VarType_2=OUT +VarMIN_2=-1 +VarMAX_2=1 + +NumPoints=5 +e_nd=-1.5, -0.1, 0.0, 1.0, 1.5 +du_cr=-1.0, -1.0, 0.0, 1.0, 1.0 diff --git a/resources/META-INF/MANIFEST.MF b/resources/META-INF/MANIFEST.MF new file mode 100644 index 0000000..6409376 --- /dev/null +++ b/resources/META-INF/MANIFEST.MF @@ -0,0 +1,7 @@ +MIDlet-Name: PowerScalingSunSPOT +MIDlet-Version: 1.0.0 +MIDlet-Vendor: UNIVERSIDAD POLITECNICA DE MADRID (UPM) +MIDlet-Description: Power Scaling Controller for CMS Pilot in DEMANES Project +MIDlet-1: PowerScalingSunSPOT, , eu.artemis.demanes.impl.SunSPOT.SunSPOTPowerController +MicroEdition-Profile: IMP-1.0 +MicroEdition-Configuration: CLDC-1.1 diff --git a/resources/NDr_FDM_E_v1.ini b/resources/NDr_FDM_E_v1.ini new file mode 100644 index 0000000..efce7d9 --- /dev/null +++ b/resources/NDr_FDM_E_v1.ini @@ -0,0 +1,16 @@ +NumInputs=1 +NumOutputs=1 + +VarID_1=e_E +VarType_1=IN +VarMIN_1=-2 +VarMAX_1=2 + +VarID_2=du_nd +VarType_2=OUT +VarMIN_2=-1 +VarMAX_2=1 + +NumPoints=5 +e_E=-1.5, -1.0, 0.0, 1.0, 1.5 +du_nd=-1.0, -1.0, 0.0, 1.0, 1.0 diff --git a/resources/reconfiguration.conf b/resources/reconfiguration.conf new file mode 100644 index 0000000..93992e0 --- /dev/null +++ b/resources/reconfiguration.conf @@ -0,0 +1 @@ +trigger.interval=5000 diff --git a/src/eu/artemis/demanes/datatypes/ANES_BUNDLE.java b/src/eu/artemis/demanes/datatypes/ANES_BUNDLE.java new file mode 100644 index 0000000..6320073 --- /dev/null +++ b/src/eu/artemis/demanes/datatypes/ANES_BUNDLE.java @@ -0,0 +1,49 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.datatypes; + +import eu.artemis.demanes.exceptions.NonExistentKeyException; +import eu.artemis.demanes.exceptions.TypedRequestException; + +/** + * ANES_BUNDLE (for SunSPOT) + * + * @author DEMANES + * @version 0.1 + * @since 27 nov. 2013 + * + * @author Néstor Lucas Martínez + * @version 0.2 + */ + +public interface ANES_BUNDLE { + + public ANES_BUNDLE clone(); + + public boolean containsKey(String key); + + public boolean containsKey(String key, Class clazz); + + public Object get(String key) throws NonExistentKeyException; + + public Object get(String key, Class clazz) throws TypedRequestException, + NonExistentKeyException; + + public Class getType(String key) throws NonExistentKeyException; + + public void put(String key, Object value); + +} diff --git a/src/eu/artemis/demanes/datatypes/ANES_URN.java b/src/eu/artemis/demanes/datatypes/ANES_URN.java new file mode 100644 index 0000000..cb1fe59 --- /dev/null +++ b/src/eu/artemis/demanes/datatypes/ANES_URN.java @@ -0,0 +1,184 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.datatypes; + +import com.sun.spot.espot.peripheral.ota.URL; + +/** + * ANES_URN (for SunSPOT) + * + * @author DEMANES + * @version 0.1 + * @since 27 nov. 2013 + * + * @author Néstor Lucas Martínez + * @version 0.2 + */ + +public class ANES_URN { + + private static final String DEMANES_NID = "demanes"; + private static final String URN_PREFIX = "urn:"; + + /** + * Creates an instance of ANES_URN and throws a runtime exception if its + * syntax is not valid. + * + * @param text The text of the URN + * @return The URN created + * @throws ANES_URN_Exception the exception generated if the syntax is not + * correct. + */ + public static ANES_URN create(final String text) throws ANES_URN_Exception { + return new ANES_URN(text); + } + + /** + * Is it a valid ANES_URN? + * + * @param text The text to validate + * @return Yes of no + */ + public static boolean isValid(final String text) { + return text.toLowerCase().startsWith(URN_PREFIX + DEMANES_NID); + } + + /** + * The basic information container for this type. + */ + private final String urn; + + /** + * Public constructor. + * + * @param text The text of the URN + * @throws ANES_URN_Exception If syntax is not correct + */ + public ANES_URN(final String text) throws ANES_URN_Exception { + this.urn = text; + } + + /** + * Public constructor. + * + * @param nid The namespace ID + * @param nss The namespace specific string + */ + public ANES_URN(final String nid, final String nss) { + this.urn = URN_PREFIX + nid + ":" + nss; + } + + /** + * @param urn + * @return + */ + public int compareTo(final ANES_URN urn) { + return this.urn.compareTo(urn.urn); + } + + /** + * @param obj + * @return + */ + public boolean equals(final Object obj) { + if (this.getClass().equals(obj.getClass())) { + return this.urn.equalsIgnoreCase(((ANES_URN) obj).toString()); + } else { + return false; + } + } + + /** + * @return + */ + public int hashCode() { + return this.urn.hashCode(); + } + + /** + * Whether this URN has params? + * + * @return Has them? + */ + public boolean hasParams() { + return this.urn.indexOf("?") != -1; + } + + /** + * Is this ANES_URN empty? + * + * @return true if this ANES_URN is empty, false otherwise. + */ + public boolean isEmpty() { + return this.urn.length() == 0; + } + + /** + * Does it match the pattern? + * + * @param pattern The pattern to match + * @return Yes of no + */ + public boolean matches(final String pattern) { + return this.urn.regionMatches(true, 0, pattern, 0, pattern.length()); + } + + /** + * Get namespace ID. + * + * @return Namespace ID + */ + public String nid() { + if (this.urn.toLowerCase().startsWith(URN_PREFIX)) { + return this.urn.substring(URN_PREFIX.length(), this.urn.indexOf(":", URN_PREFIX.length())); + } + else { + return ""; + } + } + + /** + * Get namespace specific string. + * + * @return Namespace specific string + */ + public String nss() { + if (this.urn.toLowerCase().startsWith(URN_PREFIX + DEMANES_NID)) { + return this.urn.substring((URN_PREFIX + DEMANES_NID).length(), this.urn.indexOf(":", (URN_PREFIX + DEMANES_NID).length())); + } + else { + return ""; + } } + + /** + * Returns a string representation of this object. + * + * @return A string representation of this object. + */ + public String toString() { + return this.urn; + } + + /** + * Convert it to URL. + * + * @return The URL + */ + public URL toURL() { + return new URL(this.urn); + } + +} diff --git a/src/eu/artemis/demanes/datatypes/ANES_URN_Exception.java b/src/eu/artemis/demanes/datatypes/ANES_URN_Exception.java new file mode 100644 index 0000000..24c0260 --- /dev/null +++ b/src/eu/artemis/demanes/datatypes/ANES_URN_Exception.java @@ -0,0 +1,33 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.datatypes; + +/** + * ANES_URN_Exception + * + * @author DEMANES + * @version 0.1 + * @since 27 nov. 2013 + */ +public class ANES_URN_Exception extends Exception { + public ANES_URN_Exception() { + super(); + } + + public ANES_URN_Exception(String e) { + super(e); + } +} diff --git a/src/eu/artemis/demanes/exceptions/ActionInvocationException.java b/src/eu/artemis/demanes/exceptions/ActionInvocationException.java new file mode 100644 index 0000000..83800d1 --- /dev/null +++ b/src/eu/artemis/demanes/exceptions/ActionInvocationException.java @@ -0,0 +1,46 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.exceptions; + +import eu.artemis.demanes.datatypes.ANES_URN; + +/** + * An ActionInvocationException is thrown to indicate that an error occurred + * during the invocation of an {@linkplain Action}. The original exception is + * added as a cause. + * + * @see eu.artemis.demanes.reconfiguration.Action#invoke + * + * @author leeuwencjv + * @version 0.1 + * @since 9 apr. 2014 + * + */ +public class ActionInvocationException extends Exception { + + private static final long serialVersionUID = -4022985095456964143L; + + /** + * @param urn + * The URN of the Action that threw the exception when invoking + * @param e + * The original exception that occurred during invocation + */ + public ActionInvocationException(ANES_URN urn, Exception e) { + super("Error while invokin Action with urn " + urn + "\n" + e.toString()); + } + +} diff --git a/src/eu/artemis/demanes/exceptions/InexistentActionID.java b/src/eu/artemis/demanes/exceptions/InexistentActionID.java new file mode 100644 index 0000000..42514ab --- /dev/null +++ b/src/eu/artemis/demanes/exceptions/InexistentActionID.java @@ -0,0 +1,40 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.exceptions; + +import eu.artemis.demanes.datatypes.ANES_URN; + +/** + * An InexistentActionID is thrown when an Action is referenced using a ANES_URN + * that is unknown to the receiver object. + * + * @author leeuwencjv + * @version 0.1 + * @since 9 apr. 2014 + * + */ +public class InexistentActionID extends Exception { + + private static final long serialVersionUID = 1996097768538949995L; + + /** + * @param id + */ + public InexistentActionID(ANES_URN id) { + super("No action available with id " + id); + } + +} diff --git a/src/eu/artemis/demanes/exceptions/InexistentObservationID.java b/src/eu/artemis/demanes/exceptions/InexistentObservationID.java new file mode 100644 index 0000000..ef90338 --- /dev/null +++ b/src/eu/artemis/demanes/exceptions/InexistentObservationID.java @@ -0,0 +1,40 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.exceptions; + +import eu.artemis.demanes.datatypes.ANES_URN; + +/** + * An InexistentObservationID is thrown when an Observation is referenced using + * a ANES_URN that is unknown to the receiver object. + * + * @author leeuwencjv + * @version 0.1 + * @since 9 apr. 2014 + * + */ +public class InexistentObservationID extends Exception { + + private static final long serialVersionUID = -8562339554192680556L; + + /** + * @param id + */ + public InexistentObservationID(ANES_URN id) { + super("No observation available with id " + id); + } + +} diff --git a/src/eu/artemis/demanes/exceptions/NonExistentKeyException.java b/src/eu/artemis/demanes/exceptions/NonExistentKeyException.java new file mode 100644 index 0000000..1941f17 --- /dev/null +++ b/src/eu/artemis/demanes/exceptions/NonExistentKeyException.java @@ -0,0 +1,37 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.exceptions; + +/** + * NonExistentKeyException + * + * @author leeuwencjv + * @version 0.1 + * @since 10 apr. 2014 + * + */ +public class NonExistentKeyException extends Exception { + + /** + * + */ + private static final long serialVersionUID = -7933005603571177441L; + + public NonExistentKeyException(String key) { + super("Non existent key " + key + " in bundle"); + } + +} diff --git a/src/eu/artemis/demanes/exceptions/ObservationInvocationException.java b/src/eu/artemis/demanes/exceptions/ObservationInvocationException.java new file mode 100644 index 0000000..296ce26 --- /dev/null +++ b/src/eu/artemis/demanes/exceptions/ObservationInvocationException.java @@ -0,0 +1,47 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.exceptions; + +import eu.artemis.demanes.datatypes.ANES_URN; + +/** + * An ObservationInvocationException is thrown to indicate that an error + * occurred during the invocation of an {@linkplain Observation}. The original + * exception is added as a cause. + * + * @see eu.artemis.demanes.reconfiguration.Observation#getValue + * + * @author leeuwencjv + * @version 0.1 + * @since 9 apr. 2014 + * + */ +public class ObservationInvocationException extends Exception { + + private static final long serialVersionUID = 4874935197610473240L; + + /** + * @param urn + * the URN of the Observation that threw the exception when + * invoking + * @param e + * the original exception that occurred during invocation + */ + public ObservationInvocationException(ANES_URN urn, Exception e) { + super("Error while invoking Observation with urn " + urn + "\n" + e.toString()); + } + +} diff --git a/src/eu/artemis/demanes/exceptions/TypedRequestException.java b/src/eu/artemis/demanes/exceptions/TypedRequestException.java new file mode 100644 index 0000000..8a55707 --- /dev/null +++ b/src/eu/artemis/demanes/exceptions/TypedRequestException.java @@ -0,0 +1,45 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.exceptions; + +/** + * TypedRequestException + * + * @author leeuwencjv + * @version 0.1 + * @since 10 apr. 2014 + * + */ +public class TypedRequestException extends Exception { + + /** + * + */ + private static final long serialVersionUID = -2614277490603022155L; + + public TypedRequestException(Class foundType, Class requestedType) { + super("Unexpected type " + foundType.getName() + + " encountered, when type " + requestedType.getName() + + " was requested."); + } + + public TypedRequestException(Class requestedType, + ClassCastException cause) { + super("Error in casting value to " + requestedType.getName() + "\n" + + cause.toString()); + } + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.java b/src/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.java new file mode 100644 index 0000000..0dc42e9 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/SunSPOTPowerController.java @@ -0,0 +1,368 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * + * You can get a copy of the license terms in licences/LICENSE. + * + */ +package eu.artemis.demanes.impl.SunSPOT; + +import com.sun.spot.core.resources.Resources; +import com.sun.spot.core.resources.transducers.ISwitch; +import com.sun.spot.core.resources.transducers.ISwitchListener; +import com.sun.spot.core.resources.transducers.LEDColor; +import com.sun.spot.core.resources.transducers.SwitchEvent; +import com.sun.spot.core.util.Properties; +import com.sun.spot.multihop.radio.LowPan; +import com.sun.spot.multihop.radio.mhrp.lqrp.LQRPManager; +import eu.artemis.demanes.impl.SunSPOT.common.RadioProperties; +import eu.artemis.demanes.impl.SunSPOT.common.ReconfigurationContext; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.common.SystemProperties; +import eu.artemis.demanes.impl.SunSPOT.communications.RemoteManagement; +import eu.artemis.demanes.impl.SunSPOT.communications.RoutingListener; +import eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner.PowerScalingControllerFactory; +import eu.artemis.demanes.impl.SunSPOT.reconfiguration.ORAMediatorForSunSPOT; +import eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor.PowerScalingMonitor; +import eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions.PowerTransmissionActuator; +import eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee; +import eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeAddMessageException; +import eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage; +import eu.artemis.demanes.reconfiguration.ORAMediator; +import eu.artemis.demanes.reconfiguration.Reasoner; +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; +import javax.microedition.midlet.MIDlet; +import javax.microedition.midlet.MIDletStateChangeException; +import javax.microedition.rms.RecordEnumeration; +import javax.microedition.rms.RecordStore; +import javax.microedition.rms.RecordStoreException; + +/** + * The startApp method of this class is called by the VM to start the + * application. + * + * The manifest specifies this class as MIDlet-1, which means it will be + * selected for execution. + * + * @author Néstor Lucas Martínez + * @author Yuanjiang Huang + * @version 1.0.0 + */ +public class SunSPOTPowerController extends MIDlet implements ISwitchListener { + + private static Properties reconfigurationProperties; + private SystemContext context; + private Integer marqueeMessageID; + private MarqueeMessage midletMessage; + + protected void startApp() throws MIDletStateChangeException { + + // The switches each have a tag: "SW1" for the left, and "SW2" for the right + ISwitch sw1 = (ISwitch) Resources.lookup(ISwitch.class, "SW1"); + ISwitch sw2 = (ISwitch) Resources.lookup(ISwitch.class, "SW2"); + + sw1.addISwitchListener(this); + sw2.addISwitchListener(this); + + // Initalize private attributes + midletMessage = new MarqueeMessage(); + + // This is just a guide for the basic deployment of components + // STEP 1.1 + // Define the context variables the system. + // NOTE: The asignment of properties can be done in a separate class. + reconfigurationProperties = init(); + + // STEP 1.2 + // Create a System context. + context = new SystemContext(); + + // STEP 1.3 + // First midlet marquee + try { + midletMessage.setMessageAtPosition(0, LEDColor.GREEN); + SystemContext.getMarquee().setStatusIndicator(Marquee.STATUS_IS_STANDBY); + marqueeMessageID = (Integer) SystemContext.getMarquee().addMessage(midletMessage); + SystemContext.getMarquee().setUpdatingInterval(1); + } catch (MarqueeAddMessageException ex) { + SystemContext.getMarquee().setStatusIndicator(Marquee.STATUS_IS_NOT_READY); + } + + // STEP 1.4 + // If connected to an USB port then print license and dump record store history + midletMessage.setMessageAtPosition(0, LEDColor.WHITE); + SystemContext.getMarquee().updateMessage(marqueeMessageID, midletMessage); + if (SystemContext.isUSBConnected()) { + printLicense(); + dumpRecordHistory(); + } + midletMessage.setMessageAtPosition(0, LEDColor.GREEN); + SystemContext.getMarquee().updateMessage(marqueeMessageID, midletMessage); + + // STEP 2 + midletMessage.setMessageAtPosition(1, LEDColor.WHITE); + SystemContext.getMarquee().updateMessage(marqueeMessageID, midletMessage); + // Instantiate the components of the system. + // NOTE: Please, pay attention to the order of creation of the objects. + // For the reconfiguration components... + + // STEP 2.1 + // Create the observers... + PowerScalingMonitor powerScalingMonitor = new PowerScalingMonitor(context, reconfigurationProperties); + + // ... and the actuators + PowerTransmissionActuator ptactuator = new PowerTransmissionActuator(reconfigurationProperties); + context.setPTACT(ptactuator); + + // Notify user through marquee + midletMessage.setMessageAtPosition(1, LEDColor.GREEN); + SystemContext.getMarquee().updateMessage(marqueeMessageID, midletMessage); + + // STEP 2.2 + // Create the reasoner + midletMessage.setMessageAtPosition(2, LEDColor.WHITE); + SystemContext.getMarquee().updateMessage(marqueeMessageID, midletMessage); + + //PowerScalingController pscontroller = new PowerScalingController(reconfigurationContext); + //Reasoner reasoner = PowerScalingControllerFactory.getInstance("PTjFuzzyLogic", reconfigurationContext); + //Reasoner reasoner = PowerScalingControllerFactory.getInstance("PTSimple", reconfigurationContext); + Reasoner reasoner = PowerScalingControllerFactory.getInstance("PTInterp1DFDM", reconfigurationProperties); + + midletMessage.setMessageAtPosition(2, LEDColor.GREEN); + SystemContext.getMarquee().updateMessage(marqueeMessageID, midletMessage); + + // Create the trigger policy... + // ... already done because in our case is the same as the PowerScalingMonitor + midletMessage.setMessageAtPosition(3, LEDColor.WHITE); + SystemContext.getMarquee().updateMessage(marqueeMessageID, midletMessage); + + // Create the mediator + // This can also be recoded for using a Mediator factory + // This can be modified to pass some context information if required. + ORAMediator mediator = new ORAMediatorForSunSPOT(); + + midletMessage.setMessageAtPosition(3, LEDColor.GREEN); + SystemContext.getMarquee().updateMessage(marqueeMessageID, midletMessage); + + // STEP 3 + // Register and start the components of the system. + // For the reconfiguration components... + midletMessage.setMessageAtPosition(4, LEDColor.WHITE); + SystemContext.getMarquee().updateMessage(marqueeMessageID, midletMessage); + + // Register the observers in the mediator + mediator.registerObserver(powerScalingMonitor); + + // Register the actuators in the mediator + mediator.registerActuator(ptactuator); + + // Register the reasoner in the mediator; + mediator.setReasoner(reasoner); + + // Register the trigger policy in the mediator; + mediator.setTriggeringPolicy(powerScalingMonitor); // At this point the mediator starts the trigger policy after setting it. + + midletMessage.setMessageAtPosition(4, LEDColor.GREEN); + SystemContext.getMarquee().updateMessage(marqueeMessageID, midletMessage); + + // Everything is launched an running properly + SystemContext.getMarquee().setStatusIndicator(Marquee.STATUS_IS_READY); + SystemContext.getMarquee().setUpdatingInterval(Marquee.MINIMUM_INTERVAL); + SystemContext.getMarquee().clearMarquee(); + + // This is just for blinking in routing activities + RoutingListener rl = new RoutingListener(); + LQRPManager.getInstance().addLQRPListener(rl); + LowPan.getInstance().addDataEventListener(rl); + + // STEP 4 + // Launch remote management thread + (new Thread(new RemoteManagement(reconfigurationProperties))).start(); + } + + protected void pauseApp() { + // This is not currently called by the Squawk VM + } + + /** + * Called if the MIDlet is terminated by the system. It is not called if + * MIDlet.notifyDestroyed() was called. + * + * @param unconditional If true the MIDlet must cleanup and release all + * resources. + */ + protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { } + + private Properties init() { + // STEP 1 + // Sets the spot to use the minimum power of transmission + //((IRadioPolicyManager) Resources.lookup(IRadioPolicyManager.class)).setOutputPower(RadioProperties.MINIMUM_POWER_TRANSMISSION); + + // STEP 2 + // Create default properties + ReconfigurationContext reconfigurationContext = new ReconfigurationContext(); + reconfigurationProperties = new Properties(reconfigurationContext.getProperties()); + + // STEP 3.1 + // Add system properties + if (System.getProperty(SystemProperties.SPOT_URN_NSS) != null) { + reconfigurationProperties.setProperty(SystemProperties.SPOT_URN_NSS, System.getProperty(SystemProperties.SPOT_URN_NSS)); + } + + if (System.getProperty(SystemProperties.LOG_LEVEL) != null) { + reconfigurationProperties.setProperty(SystemProperties.LOG_LEVEL, System.getProperty(SystemProperties.LOG_LEVEL)); + } + + if (System.getProperty(SystemProperties.LOG_DESTINATION) != null) { + reconfigurationProperties.setProperty(SystemProperties.LOG_DESTINATION, System.getProperty(SystemProperties.LOG_DESTINATION)); + } + + // STEP 3.2 + // Add other system properties + reconfigurationProperties.setProperty(SystemProperties.BASESTATION_ADDR_PROPERTY, SystemProperties.DEFAULT_BS_ADDRESS); + reconfigurationProperties.setProperty(SystemProperties.BASESTATION_PORT, Integer.toString(SystemProperties.DEFAULT_BS_PORT)); + reconfigurationProperties.setProperty(SystemProperties.EXECUTION_CONTEXT, Integer.toString(SystemProperties.DEFAULT_EXECUTION_CONTEXT)); + reconfigurationProperties.setProperty(SystemProperties.REMOTE_MANAGEMENT_PORT, Integer.toString(SystemProperties.DEFAULT_REMOTE_MANAGEMENT_PORT)); + + // STEP 4 + // Add running environment properties + reconfigurationProperties.setProperty("reset", "true"); + reconfigurationProperties.setProperty("ptx", Integer.toString(RadioProperties.MINIMUM_POWER_TRANSMISSION)); + reconfigurationProperties.setProperty("reasoning.status", "started"); + + // STEP 5 + // Load properties file + InputStream reconfFile = this.getClass().getResourceAsStream("/reconfiguration.conf"); + + if (reconfFile != null) { + try { + reconfigurationProperties.load(reconfFile); + } catch (IOException ex) { + // Do nothing + } + } + + // STEP 6 + // Update calculated properties + reconfigurationProperties = reconfigurationContext.updateProperties(reconfigurationProperties); + + // STEP 7 + // Return + return reconfigurationProperties; + } + + private void printLicense() { + System.out.println("Copyright 2014-2015 Universidad Politécnica de Madrid (UPM).\n" + + "Some parts Copyright 2013-2015 DEMANES.\n" + + "\n" + + "Authors:\n" + + " José-Fernan Martínez Ortega\n" + + " Vicente Hernández Díaz\n" + + " Néstor Lucas Martínez\n" + + " Yuanjiang Huang\n" + + " Raúl del Toro Matamoros\n" + + "\n" + + "Parts copyrighted by Universidad Politécnica de Madrid (UPM) are distributed\n" + + "under a dual license scheme:\n" + + "\n" + + " - For academic uses: Licensed under GNU Affero General Public License as\n" + + " published by the Free Software Foundation, either\n" + + " version 3 of the License, or (at your option) any\n" + + " later version.\n" + + " \n" + + " - For any other use: Licensed under the Apache License, Version 2.0.\n" + + "\n" + + "Parts copyrighted by DEMANES are distributed under the Apache License, Version 2.0.\n" + + "\n" + + "Unless required by applicable law or agreed to in writing, software\n" + + "distributed under the License is distributed on an \"AS IS\" BASIS,\n" + + "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" + + " \n" + + "You can get a copy of the license terms in licences/LICENSE.\n" + + "\n."); + } + + private void dumpRecordHistory() { + synchronized (this) { + String[] recordStoreList = RecordStore.listRecordStores(); + if ((recordStoreList != null) && (recordStoreList.length > 0)) { + for (int recordStoreIndex = 0; recordStoreIndex < recordStoreList.length; recordStoreIndex++) { + try { + RecordStore recordStore = RecordStore.openRecordStore(recordStoreList[recordStoreIndex], false); + System.out.println("Accessing record store \"" + recordStoreList[recordStoreIndex] + "\" with " + recordStore.getNumRecords() + " records"); + RecordEnumeration recordEnumeration = recordStore.enumerateRecords(null, null, true); + while (recordEnumeration.hasNextElement()) { + ByteArrayInputStream bais = new ByteArrayInputStream(recordEnumeration.nextRecord()); + DataInputStream dis = new DataInputStream(bais); + + byte[] in = new byte[dis.available()]; + dis.read(in); + System.out.println(new String(in)); + } + System.out.println("Read " + recordStore.getNumRecords() + " records"); + recordStore.closeRecordStore(); + } catch (RecordStoreException ex) { + System.err.println("Exception trying to access record store " + recordStoreList[recordStoreIndex]); + ex.printStackTrace(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + } else { + System.out.println("No record stores found!!!"); + } + } + } + + private void deleteRecordHistory() { + synchronized (this) { + String[] recordStoreList = RecordStore.listRecordStores(); + if ((recordStoreList != null) && (recordStoreList.length + > 0)) { + for (int recordStoreIndex = 0; recordStoreIndex < recordStoreList.length; recordStoreIndex++) { + try { + RecordStore.deleteRecordStore(recordStoreList[recordStoreIndex]); + } catch (RecordStoreException ex) { + System.err.println("Exception trying to access record store " + recordStoreList[recordStoreIndex]); + ex.printStackTrace(); + } + } + } else { + System.out.println("No record stores found!!!"); + } + } + } + + public void switchPressed(SwitchEvent evt) { + if (SystemContext.isUSBConnected()) { + deleteRecordHistory(); + System.out.println("Records deleted"); + } + } + + public void switchReleased(SwitchEvent evt) { + + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.java b/src/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.java new file mode 100644 index 0000000..d736f61 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/common/DEMANESResources.java @@ -0,0 +1,44 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.common; + +/** + * DEMANES {@code Obervation} and {@code Action} resource URN + * + * @author Vicente HErnández Dí + * @version 1.0.0 + */ +public class DEMANESResources { + /** Battery Level Observation URN. */ + public static final String BLObservationURN = "urn:demanes:cmsdemo:observation:BLObservation"; + /** Node Degree Observation URN. */ + public static final String NDObservationURN = "urn:demanes:cmsdemo:observation:NDObservation"; + /** Power Transmission Action URN. */ + public static final String PTActionURN = "urn:demanes:cmsdemo:action:updatePowerTransmission"; + /** Trigger Reason Observation URN. */ + public static final String TriggerReasonURN = "urn:demanes:cmsdemo:observation:TriggerReason"; + /** Trigger Reason Value Observation URN. */ + public static final String TriggerReasonValueURN = "urn:demanes:cmsdemo:observation:TriggerReasonValue"; + + /** Variable name for DELTA CR. */ + public static final String DELTA_CR_KEY = "delta_cr"; +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/common/Events.java b/src/eu/artemis/demanes/impl/SunSPOT/common/Events.java new file mode 100644 index 0000000..da13cb4 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/common/Events.java @@ -0,0 +1,36 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licenses/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.common; + + +/** + * Events urns used by the {@code PowerScalingMonitor}. + * + * @author Vicente Hernández Dí + * @version 1.0.0 + */ +public class Events{ + /** Battery Level Event. */ + public static final String BL_EVENT = "urn:demanes:events:battLevelEvent"; + /** Node Degree EVent. */ + public static final String ND_EVENT = "urn:demanes:events:nodeDegreeEvent"; +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.java b/src/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.java new file mode 100644 index 0000000..521550e --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/common/MediatorProperties.java @@ -0,0 +1,31 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.common; + +/** + * + * @author Néstor Lucas Martínez + */ +public class MediatorProperties { + /** Behaviour of the update list. */ + public static final String UPDATE_LIST_BEHAVIOUR_PROPERTY = "mediator.updatelistbehaviour"; +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.java b/src/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.java new file mode 100644 index 0000000..62cf39b --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/common/PTActionProperties.java @@ -0,0 +1,31 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licenses/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.common; + +/** + * + * @author Néstor Lucas Martínez + */ +public class PTActionProperties { + /** CR0 value. */ + public static final String CR0_PROPERTY = "CR0"; +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/common/RadioProperties.java b/src/eu/artemis/demanes/impl/SunSPOT/common/RadioProperties.java new file mode 100644 index 0000000..36cd24a --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/common/RadioProperties.java @@ -0,0 +1,168 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licenses/LICENSE. + */ + +package eu.artemis.demanes.impl.SunSPOT.common; + +import com.sun.spot.core.resources.Resources; +import com.sun.spot.ieee_802_15_4_radio.IRadioPolicyManager; +import com.sun.squawk.util.Arrays; + +/** + * + * @author Néstor Lucas Martínez <nestor.lucas@upm.es> + */ +public class RadioProperties { + // CONSTANTS + /** The sorted array of general available transmission powers. */ + private final static int[] availablePTX = {-32, -31, -30, -25, -22, -19, -17, -15, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0}; + + /** The sorted array of general available transmission powers for channel 26. They are restricted due to FCC regulations. */ + private final static int[] availablePTXChannel26 = {-32, -31, -30, -25, -22, -19, -17, -15, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3}; + + /** The minimum power of transmission in dBm. */ + public final static int MINIMUM_POWER_TRANSMISSION = -32; + + /** The maximum power of transmission in dBm. */ + public final static int MAXIMUM_POWER_TRANSMISSION = 0; + + /** ERROR CONSTANT. */ + public final static int RADIO_PROPERTIES_ERROR = -1; + + /** + * Static method to obtain the maximum index in the available transmission + * powers array. + * + * @param channel The channel for which the maximum index is required. + * @return The maximum index fir the requested channel. + */ + public static int getMaximumPTXIndex(int channel) { + if (channel == 26) { + return availablePTXChannel26.length - 1; + } + else + return availablePTX.length - 1; + } + + /** + * Static method to obtain the minimum index in the available transmission + * powers array. It will always be 0, so this method is just to complement + * the getMaximumPTXIndex. + * + * @param channel The channel for which the maximum index is required. + * @return The maximum index fir the requested channel. + */ + public static int getMinimumPTXIndex(int channel) { + // The minimum index is always 0. It could have been coded as a constant, + // but this way it keeps coherence with the getMaximumPTXIndex method. + return 0; + } + + /** + * Static method to obtain the index of a given power of transmission + * related to the REAL available ones. + * + * @param channel The channel for which the request is done. + * @param ptx The transmission power which is asked for + * @return The index of the transmission power in the list + */ + public static int getPTXIndex(int channel, int ptx) { + // This must be improved to consider the chance of being invoked with values not listed. + if (channel == 26) { + return Arrays.binarySearch(availablePTXChannel26, ptx); + } + else { + return Arrays.binarySearch(availablePTX, ptx); + } + } + + /** + * Static method to obtain the transmission power given an index. + * + * @param channel The chanel for which the request is done. + * @param index The index of the desired transmission power. + * @return The desire transmission power, or RADIO_PROPERTIES_ERROR if the index is out of bounds. + */ + public static int getPTXatIndex(int channel, int index) { + if (channel == 26) { + if ((index < 0) || (index > availablePTXChannel26.length)) { + return RADIO_PROPERTIES_ERROR; + } + return availablePTXChannel26[index]; + } + else { + if ((index < 0) || (index > availablePTX.length)) { + return RADIO_PROPERTIES_ERROR; + } + return availablePTX[index]; + } + } + + /** + * Static method to obtain the actual radio channel in use. + * + * @return The actual radio channel in use. + */ + public static int getRadioChannel() { + return ((IRadioPolicyManager) Resources.lookup(IRadioPolicyManager.class)).getChannelNumber(); + } + + /** + * Static method to obtain the actual transmission power. + * + * @return The actual transmission power. + */ + public static int getPTX() { + return ((IRadioPolicyManager) Resources.lookup(IRadioPolicyManager.class)).getOutputPower(); + } + + /** + * Static method to get the maximum available transmission power in + * the specified channel. + * + * @param channel The channel. + * @return The maximum transmission power in the channel, in dBm. + */ + public static int getMaximumPTX(int channel) { + if (channel == 26) { + return availablePTXChannel26[availablePTXChannel26.length - 1]; + } + else { + return availablePTX[availablePTX.length - 1]; + } + } + + /** + * Static method to get the minimum available transmission power in + * the specified channel. + * + * @param channel The channel. + * @return The minimum transmission power in the channel, in dBm. + */ + public static int getMinimumPTX(int channel) { + if (channel == 26) { + return availablePTXChannel26[0]; + } + else { + return availablePTX[0]; + } + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.java b/src/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.java new file mode 100644 index 0000000..8a1adb7 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/common/ReasonerProperties.java @@ -0,0 +1,52 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.common; + +/** + * Names of the properties used in the reasoner. + * + * @author Vicente Hernández Díaz + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class ReasonerProperties { + + // following parameters are used in the controller + public static final String KE_PROPERTY = "kE"; + public static final String KdeltaND_PROPERTY = "kdeltaND"; + public static final String NDinitPROPERTY = "ND"; + public static final String NDRefPROPERTY = "NDRef"; + public static final String ND_R_PROPERTY = "ND_R"; + + public static final String KND_PROPERTY = "k_ND"; + public static final String KCR_PROPERTY = "k_CR"; + public static final String E_CR_PROPERTY = "E_cr"; + public static final String E_CR_FACTOR_PROPERTY = "E_cr_factor"; + + public static final String e_ND_ID_PROPERTY = "e_ND"; + public static final String e_E_ID_PROPERTY = "e_E"; + public static final String du_ND_ID_PROPERTY = "du_ND"; + public static final String du_CR_ID_PROPERTY = "du_CR"; + + public static final String FDM_PRIM_CONFIG_PROPERTY = "FDM_Prim_Prop_File"; + public static final String FDM_SEC_CONFIG_PROPERTY = "FDM_Sec_Prop_File"; +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationContext.java b/src/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationContext.java new file mode 100644 index 0000000..963ca3b --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/common/ReconfigurationContext.java @@ -0,0 +1,110 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licenses/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.common; + +import com.sun.spot.core.resources.Resources; +import com.sun.spot.core.util.Properties; +import com.sun.spot.espot.peripheral.ESpot; + +/** + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class ReconfigurationContext { + + private static final int DEFAULT_K_DELTA_ND = 1; + private static final int DEFAULT_ND_INIT = 1; + private static final int DEFAULT_ND_REF = 1; + private static final double DEFAULT_K_CR = 1.0; + private static final double DEFAULT_E_CR_FACTOR = 0.2; + private static final String DEFAULT_E_ND_ID = "e_nd"; + private static final String DEFAULT_E_E_ID = "e_E"; + private static final String DEFAULT_DU_ND_ID = "du_nd"; + private static final String DEFAULT_DU_CR_ID = "du_cr"; + private static final String DEFAULT_FDM_PRIM_CONFIG = "/CR_FDM_ND_v1.ini"; + private static final String DEFAULT_FDM_SEC_CONFIG = "/NDr_FDM_E_v1.ini"; + private static final int DEFAULT_TRIGGER_INTERVAL = 2000; + private static final int DEFAULT_KSI_ND = 1; + private static final int DEFAULT_ND_MIN = 1; + private static final int DEFAULT_DELTA_ND_MIN = 1; + private static final int DEFAULT_DELTA_CR_MIN = 1; + + private Properties defaultProperties; + + public ReconfigurationContext() { + defaultProperties = new Properties(); + + defaultProperties.setProperty(ReasonerProperties.E_CR_FACTOR_PROPERTY, Double.toString(DEFAULT_E_CR_FACTOR)); + defaultProperties.setProperty(ReasonerProperties.KdeltaND_PROPERTY, Integer.toString(DEFAULT_K_DELTA_ND)); + defaultProperties.setProperty(ReasonerProperties.NDRefPROPERTY, Integer.toString(DEFAULT_ND_REF)); + defaultProperties.setProperty(ReasonerProperties.NDinitPROPERTY, Integer.toString(DEFAULT_ND_REF)); + defaultProperties.setProperty(ReasonerProperties.KCR_PROPERTY, Double.toString(DEFAULT_K_CR)); + + defaultProperties.setProperty(ReasonerProperties.FDM_PRIM_CONFIG_PROPERTY, "/CR_FDM_ND_v1.ini"); + defaultProperties.setProperty(ReasonerProperties.FDM_SEC_CONFIG_PROPERTY, "/NDr_FDM_E_v1.ini"); + defaultProperties.setProperty(ReasonerProperties.e_E_ID_PROPERTY, DEFAULT_E_E_ID); + defaultProperties.setProperty(ReasonerProperties.e_ND_ID_PROPERTY, DEFAULT_E_ND_ID); + defaultProperties.setProperty(ReasonerProperties.du_CR_ID_PROPERTY, DEFAULT_DU_CR_ID); + defaultProperties.setProperty(ReasonerProperties.du_ND_ID_PROPERTY, DEFAULT_DU_ND_ID); + + defaultProperties.setProperty(TriggerPolicyProperties.KSI_ND_PROPERTY, Integer.toString(DEFAULT_KSI_ND)); + defaultProperties.setProperty(TriggerPolicyProperties.ND_MIN_PROPERTY, Integer.toString(DEFAULT_ND_MIN)); + defaultProperties.setProperty(TriggerPolicyProperties.CR_MAX_PROPERTY, Integer.toString(RadioProperties.getMaximumPTXIndex(RadioProperties.getRadioChannel()))); + defaultProperties.setProperty(TriggerPolicyProperties.CR_MIN_PROPERTY, Integer.toString(RadioProperties.getMinimumPTXIndex(RadioProperties.getRadioChannel()))); + defaultProperties.setProperty(TriggerPolicyProperties.DELTA_ND_MIN_PROPERTY, Integer.toString(DEFAULT_DELTA_ND_MIN)); + defaultProperties.setProperty(TriggerPolicyProperties.DELTA_CR_MIN_PROPERTY, Integer.toString(DEFAULT_DELTA_CR_MIN)); + defaultProperties.setProperty(TriggerPolicyProperties.TRIGGER_INTERVAL_PROPERTY, Integer.toString(DEFAULT_TRIGGER_INTERVAL)); + + updateProperties(defaultProperties); + } + + public Properties getProperties() { + return this.defaultProperties; + } + + public Properties updateProperties(Properties properties) { + double E_cr; + double E_cr_factor; + double kE; + double k_ND; + int kdeltaND; + int ND_Ref; + int ND_R; + + E_cr_factor = Double.parseDouble(properties.getProperty(ReasonerProperties.E_CR_FACTOR_PROPERTY, Double.toString(DEFAULT_E_CR_FACTOR))); + ND_Ref = Integer.parseInt(properties.getProperty(ReasonerProperties.NDRefPROPERTY, Integer.toString(DEFAULT_ND_REF))); + kdeltaND = Integer.parseInt(properties.getProperty(ReasonerProperties.KdeltaND_PROPERTY, Integer.toString(DEFAULT_K_DELTA_ND))); + + E_cr = (((ESpot) Resources.lookup(ESpot.class)).getPowerController().getBattery().getMaximumCapacity()) * E_cr_factor; + kE = 2.0 / E_cr; + k_ND = 2.0 / ND_Ref; + ND_R = ND_Ref + kdeltaND; + + properties.setProperty(ReasonerProperties.E_CR_PROPERTY, Double.toString(E_cr)); + properties.setProperty(ReasonerProperties.KE_PROPERTY, Double.toString(kE)); + properties.setProperty(ReasonerProperties.ND_R_PROPERTY, Integer.toString(ND_R)); + properties.setProperty(ReasonerProperties.KND_PROPERTY, Double.toString(k_ND)); + + return properties; + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/common/SystemContext.java b/src/eu/artemis/demanes/impl/SunSPOT/common/SystemContext.java new file mode 100644 index 0000000..8e46964 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/common/SystemContext.java @@ -0,0 +1,117 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licenses/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.common; + +import com.sun.spot.core.resources.Resources; +import com.sun.spot.espot.peripheral.ESpot; +import eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager; +import eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions.PowerTransmissionActuator; +import eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Level; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; + +/** + * System Context defines all the objects in the system context that are + * accesible to other objects. + * + * @author Néstor Lucas Martínez + */ +public class SystemContext { + private static final CommunicationManager communicationManager = new CommunicationManager(); + private static final Logger logger = new Logger(); + private static final Marquee marquee = new Marquee(); + + private static final boolean USBStatus = ((ESpot) Resources.lookup(ESpot.class)).getUsbPowerDaemon().isUsbPowered(); + private static final Level logLevel = Level.INFO; + + private PowerTransmissionActuator ptact; + + /** + * + */ + public SystemContext() { + marquee.start(); + } + + /** + * Get the communication manager of the system. + * + * @return The Communication Manager of the system. + */ + public CommunicationManager getCommunicationManager() { + return this.communicationManager; + } + + /** + * Get the logger of the system. + * + * @return The logger of the system. + */ + public static Logger getLogger() { + return logger; + } + + /** + * Get the LED Marquee of the system. + * + * @return The LED Marquee. + */ + public static Marquee getMarquee() { + return marquee; + } + + /** + * Check if the system is USB connected. + * + * @return Tru if the mote is USB powered, false otherwise. + */ + public static boolean isUSBConnected() { + return USBStatus; + } + + /** + * Check if debug mode is active. + * + * @return True if debug mode is active, false otherwise. + */ + public static boolean isDebugActive() { + return (logLevel.intValue() <= Level.DEBUG.intValue()); + } + + /** + * Set the Transmission Power Actuator for the system. + * + * @param ptact The transmission power actuator for the system. + */ + public void setPTACT(PowerTransmissionActuator ptact) { + this.ptact = ptact; + } + + /** + * Get the Transmission Power Actuator of the system. + * + * @return The transmision power actuator of the system. + */ + public PowerTransmissionActuator getPTACT() { + return this.ptact; + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.java b/src/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.java new file mode 100644 index 0000000..5b23dcf --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/common/SystemProperties.java @@ -0,0 +1,103 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licenses/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.common; + +import com.sun.spot.core.resources.Resources; +import com.sun.spot.espot.peripheral.ESpot; +import com.sun.spot.ieee_802_15_4_radio.util.IEEEAddress; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Level; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; + +/** + * Properties used by the system. + * + * @author Néstor Lucas Martínez + */ +public class SystemProperties { + private final static ESpot espot = (ESpot) Resources.lookup(ESpot.class); + + // PROPERTIES NAMES + /** The SunSPOT property name for its IEEE address, "spot.address". */ + public final static String IEEE_ADDRESS = "spot.address"; + + /** The SunSPOT property name for the NSS part for construction any URN, "urn.nss.spotpart". */ + public final static String SPOT_URN_NSS = "urn.nss.spotpart"; + + /** The log level property name, "log.level". */ + public final static String LOG_LEVEL = "log.level"; + + /** The log destination property name, "log.destination". */ + public final static String LOG_DESTINATION = "log.destination"; + + /** Base station address. */ + public final static String BASESTATION_ADDR_PROPERTY = "basestation.address"; + + /** Base station port. */ + public final static String BASESTATION_PORT = "basestation.port"; + + /** Execution context. */ + public final static String EXECUTION_CONTEXT = "execution.context"; + + /** Remote management port .*/ + public final static String REMOTE_MANAGEMENT_PORT = "remotemng.port"; + + + // DEFAULT VALUES + /** The SunSPOT IEEE Address. */ + public final static String IEEE_ADDRESS_VALUE = IEEEAddress.toDottedHex(espot.getIEEEAddress()); + + /** The default value for the NSS part for construction any URN, "SunSPOT" + last four bytes of IEEE address. */ + public final static String SPOT_URN_NSS_VALUE = "sunspot" + IEEE_ADDRESS_VALUE.substring(IEEE_ADDRESS_VALUE.length() - 4); + + /** The default log level (ALL) for the whole application. */ + public final static String LOG_LEVEL_VALUE = Level.ALL.toString(); + + /** The default log destination (STDOUT) for the whole application. */ + public final static String LOG_DESTINATION_VALUE = String.valueOf(Logger.SYSTEM_OUTPUT); + + /** The first LED index for the LEDs array. */ + public final static int FIRST_LED = 0; + + /** The last LED index for the LEDs array. */ + public final static int LAST_LED = 7; + + /** Default base station address for Den Haag video. */ + public final static String DEFAULT_BS_ADDRESS = "0014.4F01.0000.7B23"; + + /** Default base station address in {@code Long} format. */ + public final static long DEFAULT_BS_ADDRESSS_LONG = IEEEAddress.toLong(DEFAULT_BS_ADDRESS); + + /** Default base station port. */ + public final static int DEFAULT_BS_PORT = 100; + + /** Execution context: CMS. */ + public final static byte EXECUTION_CONTEXT_CMS = 0x01; + + /** Execution context: Experimental. */ + public final static byte EXECUTION_CONTEXT_EXPERIMENTAL = 0x02; + + /** Default execution context. */ + public final static byte DEFAULT_EXECUTION_CONTEXT = EXECUTION_CONTEXT_CMS; + + /** Default remote management port. */ + public final static int DEFAULT_REMOTE_MANAGEMENT_PORT = 201; +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.java b/src/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.java new file mode 100644 index 0000000..9a4a7e6 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/common/TriggerPolicyProperties.java @@ -0,0 +1,40 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licenses/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.common; + +/** + * Properties used by the Power Scaling Monitor ({@code TriggerPolicy}). + * + * @author Néstor Lucas Martínez + */ +public class TriggerPolicyProperties { + + public static final String TRIGGER_INTERVAL_PROPERTY = "trigger.interval"; + + // following parameters are used in the trigger rules + public static final String KSI_ND_PROPERTY = "KSI_ND"; + public static final String ND_MIN_PROPERTY = "ND_MIN"; + public static final String CR_MAX_PROPERTY = "CR_MAX"; + public static final String CR_MIN_PROPERTY = "CR_MIN"; + public static final String DELTA_ND_MIN_PROPERTY = "DELTA_ND_MIN"; + public static final String DELTA_CR_MIN_PROPERTY = "DELTA_CR_MIN"; +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager.java b/src/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager.java new file mode 100644 index 0000000..d5b59f9 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/communications/CommunicationManager.java @@ -0,0 +1,201 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.communications; + +import com.sun.spot.ieee_802_15_4_radio.util.IEEEAddress; +import com.sun.spot.multihop.io.j2me.radiogram.Radiogram; +import com.sun.spot.multihop.io.j2me.radiogram.RadiogramConnection; +import com.sun.spot.multihop.radio.NoRouteException; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import javax.microedition.io.Connector; + +/** + * Manager for the communications. All communications with other resources + * should be done through this class. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class CommunicationManager { + + /** Unicast communication mode. */ + public static final int MODE_UNICAST = 0x00; + /** Anycast communication mode. NOT IMPLEMENTED. */ + public static final int MODE_ANYCAST = 0x01; + /** Multicast communication mode. NOT IMPLEMENTED. */ + public static final int MODE_MULTICAST = 0x02; + /** Broadcast communication mode. */ + public static final int MODE_BROADCAST = 0x03; + + /** Message priority normal. */ + public static final int PRIORITY_NORMAL = 0x00; + + /** Message importance normal. */ + public static final int IMPORTANCE_NORMAL = 0x00; + + /** + * + */ + public CommunicationManager() { } + + /** + * Sends a message to a specified destination using the specified + * mode, priority and importance. + * + * @param message The message to be sent. + * @param size The size of the message to be sent. + * @param mode The mode to be used for the communication. + * @param destination The message destination. + * @param priority The message priority. + * @param importance The message importance. + * @return True if the message is sent, false otherwise. + */ + public boolean send(ByteArrayOutputStream message, int size, int mode, String destination, int priority, int importance) { + RadiogramConnection connection = null; + Radiogram radiogram; + RadiogramAddress destinationAddress; + + destinationAddress = resolveDestination(destination); + + try { + switch (mode) { + case MODE_BROADCAST: + connection = (RadiogramConnection) Connector.open("radiogram://broadcast:" + destinationAddress.getPort()); + radiogram = (Radiogram) connection.newDatagram(connection.getMaximumLength()); + break; + case MODE_UNICAST: + connection = (RadiogramConnection) Connector.open("radiogram://" + destinationAddress.getAddressAsString() + ":" + destinationAddress.getPort()); + radiogram = (Radiogram) connection.newDatagram(connection.getMaximumLength()); + break; + + default: // Default mode is unicast + connection = (RadiogramConnection) Connector.open("radiogram://broadcast:" + destinationAddress.getPort()); + radiogram = (Radiogram) connection.newDatagram(connection.getMaximumLength()); + } + + radiogram.reset(); + radiogram.write(message.toByteArray()); + connection.send(radiogram); + return true; + } catch (NoRouteException ex) { + SystemContext.getLogger().warning("--- No route found to: " + destinationAddress.getAddressAsString()); + } catch (IOException ex) { + if (SystemContext.isUSBConnected() & SystemContext.isDebugActive()) { + ex.printStackTrace(); + } + } finally { + if (connection != null) { + try { + connection.close(); + } catch (IOException ex) { + if (SystemContext.isUSBConnected() & SystemContext.isDebugActive()) { + ex.printStackTrace(); + } + } + } + } + + return false; + } + + /** + * Resolves the specified destination address. + * + * @param destination The destination address to be resolved. + * @return The resolved address. + */ + public RadiogramAddress resolveDestination(String destination) { + RadiogramAddress radiogramAddress; + + radiogramAddress = new RadiogramAddress(); + + radiogramAddress.setPort(Integer.parseInt(destination.substring(destination.lastIndexOf(':') + 1))); + radiogramAddress.setAddress(IEEEAddress.toLong(destination.substring(0, destination.lastIndexOf(':')))); + + return radiogramAddress; + } + + /** + * Inner class implementing a RadiogramAddress. + */ + class RadiogramAddress { + + private long address; + private int port; + + /** + * Get the MAC address as a {@code Long} object. + * + * @return The MAC address. + */ + public long getAddressAsLong() { + return address; + } + + /** + * Get the MAC address as a {@code String}. + * + * @return The MAC address. + */ + public String getAddressAsString() { + return IEEEAddress.toDottedHex(this.address); + } + + /** + * Set the MAC address specified as a {@code Long} object. + * + * @param address The MAC address. + */ + public void setAddress(long address) { + this.address = address; + } + + /** + * Set the MAC address specified as a {@code String}. + * + * @param address The MAC address. + */ + public void setAddress(String address) { + this.address = IEEEAddress.toLong(address); + } + + /** + * Get the port. + * + * @return The port. + */ + public int getPort() { + return port; + } + + /** + * Set the port. + * + * @param port The port. + */ + public void setPort(int port) { + this.port = port; + } + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/communications/RemoteManagement.java b/src/eu/artemis/demanes/impl/SunSPOT/communications/RemoteManagement.java new file mode 100644 index 0000000..cf1c562 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/communications/RemoteManagement.java @@ -0,0 +1,89 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.communications; + +import com.sun.spot.core.util.Properties; +import com.sun.spot.multihop.io.j2me.radiogram.Radiogram; +import com.sun.spot.multihop.io.j2me.radiogram.RadiogramConnection; +import com.sun.squawk.util.StringTokenizer; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.common.SystemProperties; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; +import java.io.IOException; +import javax.microedition.io.Connector; + +/** + * + * @author Néstor Lucas Martínez <nestor.lucas@upm.es> + */ +public class RemoteManagement implements Runnable { + private final Logger logger; + private final Properties reconfigurationProperties; + private int rmport; + + public RemoteManagement(Properties properties) { + this.logger = SystemContext.getLogger(); + this.reconfigurationProperties = properties; + } + + public void run() { + rmport = Integer.parseInt(reconfigurationProperties.getProperty(SystemProperties.REMOTE_MANAGEMENT_PORT, Integer.toString(SystemProperties.DEFAULT_REMOTE_MANAGEMENT_PORT))); + + RadiogramConnection connection = null; + Radiogram radiogram; + + while (true) { + try { + if (connection == null) { + connection = (RadiogramConnection) Connector.open("radiogram://:" + rmport); + } + + radiogram = (Radiogram) connection.newDatagram(connection.getMaximumLength()); + radiogram.reset(); + + connection.receive(radiogram); + + byte[] message = new byte[radiogram.getLength()]; + radiogram.readFully(message); + String parameterizationString = new String(message); + + logger.info("Received parameterization radiogram:" + parameterizationString); + + // Parse parameters + StringTokenizer parametersTokens = new StringTokenizer(parameterizationString, ","); + while (parametersTokens.hasMoreElements()) { + String token = (String) parametersTokens.nextElement(); + String property = token.substring(0, token.indexOf(':')); + String value = token.substring(token.indexOf(':') + 1, token.length()); + logger.info("Parsing parameter " + property + " with value " + value); + reconfigurationProperties.setProperty(property, value); + } + + reconfigurationProperties.setProperty("reset", "true"); + + } catch (IOException ex) { + logger.warning("ERROR: Parameterization communication error."); + } + } + } + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/communications/RoutingListener.java b/src/eu/artemis/demanes/impl/SunSPOT/communications/RoutingListener.java new file mode 100644 index 0000000..8bf6147 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/communications/RoutingListener.java @@ -0,0 +1,137 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.communications; + +import com.sun.spot.core.resources.transducers.LEDColor; +import com.sun.spot.ieee_802_15_4_radio.util.IEEEAddress; +import com.sun.spot.multihop.radio.IDataEventListener; +import com.sun.spot.multihop.radio.mhrp.interfaces.ILQRPEventListener; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Level; + +/** + * {@code RoutingListener} implements a listener for routing events, so they + * can be notified to the user through a LED marquee. + * + * @author Néstor Lucas Martínez + */ +public class RoutingListener implements ILQRPEventListener, IDataEventListener { + + private static final LEDColor RREQ_COLOR = LEDColor.WHITE; + private static final LEDColor RREP_COLOR = LEDColor.GREEN; + private static final LEDColor RERR_COLOR = LEDColor.RED; + private static final LEDColor DATA_COLOR = LEDColor.BLUE; + + /** + * + */ + public RoutingListener() { } + + /** + * Method called when a RREQ is sent. + * + * @param originator Route request originator. + * @param destination Route request destination. + * @param hopCount Number of hops to the destination. + * @param routeCost Cost to the destination. + */ + public void RREQSent(long originator, long destination, int hopCount, double routeCost) { + SystemContext.getMarquee().blinkActivity1(RREQ_COLOR); + } + + /** + * Method called when a RREP is sent. + * + * @param originator Route request originator. + * @param destination Route request destination. + * @param hopCount Number of hops to the destination. + * @param routeCost Cost to the destination. + */ + public void RREPSent(long originator, long destination, int hopCount, double routeCost) { + SystemContext.getMarquee().blinkActivity1(RREP_COLOR); + } + + /** + * Method called when a RERR is sent. + * + * @param originator Route request originator. + * @param destination Route request destination. + */ + public void RERRSent(long originator, long destination) { + SystemContext.getMarquee().blinkActivity1(RERR_COLOR); + } + + /** + * Method called when a RREQ is received. + * + * @param originator Route request originator. + * @param destination Route request destination. + * @param lastHop Route request last hop. + * @param hopCount Number of hops to the destination. + * @param routeCost Cost to the destination. + */ + public void RREQReceived(long originator, long destination, long lastHop, int hopCount, double routeCost) { + SystemContext.getMarquee().blinkActivity2(RREQ_COLOR); + } + + /** + * Method called when a RREP is received. + * + * @param originator Route request originator. + * @param destination Route request destination. + * @param lastHop Route request last hop. + * @param hopCount Number of hops to the destination. + * @param routeCost Cost to the destination. + */ + public void RREPReceived(long originator, long destination, long lastHop, int hopCount, double routeCost) { + SystemContext.getMarquee().blinkActivity2(RREP_COLOR); + } + + /** + * Method called when a RERR is received. + * + * @param originator Route request originator. + * @param destination Route request destination. + */ + public void RERRReceived(long originator, long destination) { + SystemContext.getMarquee().blinkActivity2(RERR_COLOR); + } + + /** + * Method that is called when data is forwarded through this physical node. + * + * @param lastHop previous node on the multi hop path from which the packet was received. + * @param nextHop next node on the multi hop path to which the packet is sent. + * @param originator original sender of the packet. + * @param destination final destination of the packet. + */ + public void notifyForward(long lastHop, long nextHop, long originator, long destination) { + SystemContext.getMarquee().blinkActivity1(DATA_COLOR); + SystemContext.getMarquee().blinkActivity2(DATA_COLOR); + + SystemContext.getLogger().log(Level.DEBUG, "Forwarding message from " + IEEEAddress.toDottedHex(originator) + + " to " + IEEEAddress.toDottedHex(destination) + + " received from " + IEEEAddress.toDottedHex(lastHop) + + " and being forwarded through " + IEEEAddress.toDottedHex(nextHop)); + } + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.java b/src/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.java new file mode 100644 index 0000000..4bfe1c3 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/datatypes/SunSPOTBundle.java @@ -0,0 +1,155 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.datatypes; + +import eu.artemis.demanes.datatypes.ANES_BUNDLE; +import eu.artemis.demanes.exceptions.NonExistentKeyException; +import eu.artemis.demanes.exceptions.TypedRequestException; +import java.util.Hashtable; + +/** + * Implementation of the {@link ANES_BUNDLE} for the SunSPOT architecture. + * + * @author Néstor Lucas Martínez + * @author Vicente Hernández Díaz + * @version 1.0.0 + */ +public class SunSPOTBundle implements ANES_BUNDLE{ + private Hashtable bundleMap; + + /** + * Public constructor. + * + * @see {@link ANES_BUNDLE} + */ + public SunSPOTBundle() { + this.bundleMap = new Hashtable(); + } + + /** + * Creates and returns a copy of this object. + * + * @return A clone of this instance. + */ + public ANES_BUNDLE clone() { + return this.clone(); + } + + /** + * Returns true if this map contains a mapping for the specified key. + * + * @param key Key whose presence in this map is to be tested. + * @return True if this map contains a mapping for the specified key. + */ + public boolean containsKey(String key) { + return this.bundleMap.containsKey(key); + } + + /** + * Returns true if this map contains a mapping for the specified key and + * the object linked is of the specified class. + * + * @param key Key whose presence in this map is to be tested. + * @param clazz Class whose type is to be tested. + * @return True if this map contains a mapping for the specified key and matches the specified class. + */ + public boolean containsKey(String key, Class clazz) { + if (this.bundleMap.containsKey(key)) { + if (this.bundleMap.get(key).getClass().equals(clazz)) { + return true; + } + else { + return false; + } + } + else { + return false; + } + } + + /** + * Returns the value to which the specified key is mapped. + * + * @param key Key whose associated value is to be returned. + * @return The value to which the specified key is mapped. + * @throws NonExistentKeyException When key is not found in this map. + */ + public Object get(String key) throws NonExistentKeyException { + if (this.bundleMap.containsKey(key)) { + return this.bundleMap.get(key); + } + else { + throw new NonExistentKeyException(key); + } + } + + /** + * Returns the value to which the specified key is mapped if it is of the + * same class as the specified class. + * + * @param key Key whose associated value is to be returned. + * @param clazz Class whose type is to be checked. + * @return The value to which the specified key is mapped. + * @throws TypedRequestException When class does not match. + * @throws NonExistentKeyException When key is not found in this map. + */ + public Object get(String key, Class clazz) throws TypedRequestException, NonExistentKeyException { + if (this.bundleMap.containsKey(key)) { + if (this.bundleMap.get(key).getClass().equals(clazz)) { + return this.bundleMap.get(key); + } + else { + throw new TypedRequestException(this.bundleMap.get(key).getClass(), clazz); + } + } + else { + throw new NonExistentKeyException(key); + } + } + + /** + * Returns the type of the object associated to the specified key. + * + * @param key Key whose associated value type is to be returned + * @return The class of the objected associated to the specified key. + * @throws NonExistentKeyException When key is not found in the map. + */ + public Class getType(String key) throws NonExistentKeyException { + if (this.bundleMap.containsKey(key)) { + return this.bundleMap.get(key).getClass(); + } + else { + throw new NonExistentKeyException(key); + } + } + + /** + * Associates the specified value with the specified key in this map. + * + * @param key Key with which the specified value is to be associated. + * @param value Value to be associated with the specified key. + */ + public void put(String key, Object value) { + this.bundleMap.put(key, value); + } + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/DefaultConfig.java b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/DefaultConfig.java new file mode 100644 index 0000000..3338823 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/DefaultConfig.java @@ -0,0 +1,57 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner; + +import com.sun.spot.core.util.Properties; + +/** + * Class with the definition of basics keys for the configuration file + * It also contains the description of the format for values. + * + * @author Ra&uacte;l del Toro Matamoros + * @version 1.0.0 + */ +public class DefaultConfig { + public Properties defaultProp; + + public DefaultConfig(){ + + this.defaultProp = new Properties(); + + this.defaultProp.setProperty(KEY.NUMBER_OF_INPUTS, "1"); + this.defaultProp.setProperty(KEY.NUMBER_OF_OUTPUTS, "1"); + this.defaultProp.setProperty(KEY.VAR_ID + KEY.VAR_DELIM + "1", "X"); + this.defaultProp.setProperty(KEY.VAR_TYPE + KEY.VAR_DELIM + "1", KEY.VAR_TYPE_IN); + this.defaultProp.setProperty(KEY.VAR_MIN + KEY.VAR_DELIM + "1", "-1.0"); + this.defaultProp.setProperty(KEY.VAR_MAX + KEY.VAR_DELIM + "1", "1.0"); + this.defaultProp.setProperty(KEY.VAR_ID + KEY.VAR_DELIM + "2", "Y"); + this.defaultProp.setProperty(KEY.VAR_TYPE + KEY.VAR_DELIM + "2", KEY.VAR_TYPE_OUT); + this.defaultProp.setProperty(KEY.VAR_MIN + KEY.VAR_DELIM + "2", "-1.0"); + this.defaultProp.setProperty(KEY.VAR_MAX + KEY.VAR_DELIM + "2", "1.0"); + this.defaultProp.setProperty(KEY.NUMBER_OF_POINTS, "2"); + //this.put("X", "-1.0, 1.0"); + } + + public Properties getProp(){ + return this.defaultProp; + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/ERRORMSG.java b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/ERRORMSG.java new file mode 100644 index 0000000..3125539 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/ERRORMSG.java @@ -0,0 +1,60 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licenses/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner; + +/** + * Class for error messages description. + * + * @author Raúl del Toro Matamoros + * @version 1.0.0 + */ +public final class ERRORMSG { + + private static String LAST_ERRORMSG = "No error"; + + public static final String DELIM = " - "; + + public static final String CONFIG_FILE = "Reasoning function configuration file error"; + public static final String CONFIG_FILE_KEYNUMBERS = CONFIG_FILE + DELIM + "Invalid number of properties"; + public static final String CONFIG_FILE_KEYNOTFOUND = CONFIG_FILE + DELIM + "Property not found"; + public static final String CONFIG_FILE_VALUE_NOTVALID = CONFIG_FILE + DELIM + "Invalid value for key"; + public static final String CONFIG_FILE_POINTS_ROW_HEADER_NOTFOUND = CONFIG_FILE + DELIM + "Invalid or not found header for points array"; + public static final String CONFIG_FILE_POINTS_COLUMN = CONFIG_FILE + DELIM + "Points array has missing column data"; + public static final String CONFIG_FILE_POINTS_VALUE_NOTVALID = CONFIG_FILE + DELIM + "Invalid value in points array"; + public static final String CONFIG_FILE_POINTS_VALUES_UNSORTED = CONFIG_FILE + DELIM + "Unsorted value in points array"; + + public static final String REASONING_FUNCTION = "Reasoning function error"; + public static final String VARIABLE_ID_NOTFOUND = REASONING_FUNCTION + DELIM + "Variable ID was not found"; + public static final String VARIABLE_ERROR_ACCESS = REASONING_FUNCTION + DELIM + "Variable ID is not accessible"; + + + public static void setErrorMSG(String ErrorMsg){ + LAST_ERRORMSG = ErrorMsg; + } + public static void ErrorPrint(String ErrorMsg){ + System.err.println(ErrorMsg); + } + + public static String getLastErrorMSG(){ + return LAST_ERRORMSG; + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.java b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.java new file mode 100644 index 0000000..520d5f9 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/FuzzyDM.java @@ -0,0 +1,109 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner; + +import com.sun.spot.core.util.Properties; +import java.io.IOException; +import java.io.InputStream; +import java.util.Enumeration; +import java.util.Hashtable; + +/** + * FuzzyDM + * + * This is an interface to a decision making function. + * + * @author Raúl del Toro Matamoros + * @version 1.0.0 + */ +public interface FuzzyDM { + + /** + * Load Inference System from a storage device + * + * @param resourceID + * @throws java.io.IOException + */ + + public void load(InputStream resourceID) throws IOException; + + public void load(Properties config) throws IOException; + + /* + * Returns IDs or names of input variables + */ + public Enumeration getInputsID(); + + /* + * Returns IDs or names of output variables + */ + public Enumeration getOutputsID(); + + /* + * Set input variable + */ + public boolean setInput(String inputID, Object inputVal); + + /* + * Set input variable + */ + public boolean setInput(String inputID, double inputVal); + + /* + * Get output variable + */ + public Object getOutput(String outputID); + + /* + * Get inputs variable set + */ + public Hashtable getInputsSet(); + + /* + * Get outputs variable set + */ + public Hashtable getOutputsSet(); + + /* + * Set normalization factor for the input and output variables + */ + public boolean setNormFactors(Hashtable normFactors); + + public boolean setNormFactors(String inputID, double inputVal); + + /* + * Normalize input variables + * It returns normalized values + */ + //public void normInputs(); + + /* + * Denormalize output variables + * It returns denormalized values + */ + //public void denormOutputs(); + + /* + * Perform inference calculations + */ + public void evaluate(); +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.java b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.java new file mode 100644 index 0000000..367c3a1 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Interp1DFuzzyDM.java @@ -0,0 +1,516 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licenses/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Enumeration; +import java.util.Hashtable; +import com.sun.spot.core.util.Properties; +import com.sun.squawk.util.StringTokenizer; + +/** + * + * @author Raúl del Toro Matamoros + * @version 1.0.0 + */ +public final class Interp1DFuzzyDM implements FuzzyDM{ + + // The minimum expected numbers of field stored in the function configuration file + private int DEFAULT_NUM_CONFIG_FIELDS; + + // Basics keys for the function configuration file + private Properties CONFIG_KEYS_DEFAULT; + + private Hashtable varInputs; + private Hashtable varOutputs; + + private int NumInputs; + private int NumOutputs; + private int NumPoints; + + // It stores the points array as table of double[]. + // The key for each array is the VarID + private Hashtable PointsArray; + + public Interp1DFuzzyDM(String PropFileName) throws IOException { + + // Initialization of the basics keys for the function configuration file + DefaultConfig default_config = new DefaultConfig(); + this.CONFIG_KEYS_DEFAULT = new Properties(default_config.getProp()); + + InputStream ResourceID = this.CONFIG_KEYS_DEFAULT.getClass().getResourceAsStream(PropFileName); + + //this.Configuration = new Hashtable(); + this.varInputs = new Hashtable(); + this.varOutputs = new Hashtable(); + + this.PointsArray = new Hashtable(); + + if (ResourceID != null) + this.load(ResourceID); + } + + public Interp1DFuzzyDM(InputStream ResourceID) throws IOException { + + // Initialization of the basics keys for the function configuration file + DefaultConfig default_config = new DefaultConfig(); + this.CONFIG_KEYS_DEFAULT = new Properties(default_config.getProp()); + + //this.Configuration = new Hashtable(); + this.varInputs = new Hashtable(); + this.varOutputs = new Hashtable(); + + this.PointsArray = new Hashtable(); + + this.load(ResourceID); + } + + public Interp1DFuzzyDM(Properties config) throws IOException { + + // Initialization of the basics keys for the function configuration file + DefaultConfig default_config = new DefaultConfig(); + this.CONFIG_KEYS_DEFAULT = new Properties(default_config.getProp()); + + //this.Configuration = new Hashtable(); + this.varInputs = new Hashtable(); + this.varOutputs = new Hashtable(); + + this.PointsArray = new Hashtable(); + + this.load(config); + } + + public void load(InputStream ResourceID) throws IOException{ + + Properties config = new Properties(); + + Enumeration prop_key; + String prop_key_name; + + // Temporal table to store properties + Hashtable config_temp = new Hashtable(); + + DEFAULT_NUM_CONFIG_FIELDS = this.CONFIG_KEYS_DEFAULT.size(); + + config.load(ResourceID); + + // Copy properties in a temporal Hashtable + for (prop_key = config.propertyNames(); prop_key.hasMoreElements();){ + prop_key_name = prop_key.nextElement().toString(); + + config_temp.put(prop_key_name, config.getProperty(prop_key_name)); + } + + // Check number of fields in the configuration file + if (config_temp.size() < DEFAULT_NUM_CONFIG_FIELDS ) + throw new IOException(ERRORMSG.CONFIG_FILE_KEYNUMBERS); + + checkConfigProp(config_temp); + + if ((this.NumInputs + this.NumOutputs) > 0) + checkVarProp(config_temp, this.NumInputs + this.NumOutputs); + + if (this.NumPoints > 0){ + checkPointsArray(config_temp, this.varInputs.keys()); + checkPointsArray(config_temp, this.varOutputs.keys()); + } + } + + public void load(Properties config) throws IOException{ + + Enumeration prop_key; + String prop_key_name; + + // Temporal table to store properties + Hashtable config_temp = new Hashtable(); + + DEFAULT_NUM_CONFIG_FIELDS = this.CONFIG_KEYS_DEFAULT.size(); + + // Copy properties to a temporal Hashtable + for (prop_key = config.propertyNames(); prop_key.hasMoreElements();){ + prop_key_name = prop_key.nextElement().toString(); + + config_temp.put(prop_key_name, config.getProperty(prop_key_name)); + } + + // Check number of fields in the configuration file + if (config_temp.size() < DEFAULT_NUM_CONFIG_FIELDS ) + throw new IOException(ERRORMSG.CONFIG_FILE_KEYNUMBERS); + + checkConfigProp(config_temp); + + if ((this.NumInputs + this.NumOutputs) > 0) + checkVarProp(config_temp, this.NumInputs + this.NumOutputs); + + if (this.NumPoints > 0){ + checkPointsArray(config_temp, this.varInputs.keys()); + checkSortedPointsArray((String)this.varInputs.keys().nextElement()); + checkPointsArray(config_temp, this.varOutputs.keys()); + } + } + + /* + * Function to check the description of the property keys in the configuration file + * and the number of properties. + */ + private void checkConfigProp(Hashtable config_prop) throws IOException { + int config_size = config_prop.size(); + int exp_config_size; + String prop_key_name; + Enumeration prop_key; + + // Checking properties description + for (prop_key = this.CONFIG_KEYS_DEFAULT.keys(); prop_key.hasMoreElements();){ + prop_key_name = prop_key.nextElement().toString(); + + checkProp(config_prop, prop_key_name, false); + } + + // Checking number of properties + // Storing configuration in memory + try{ + this.NumInputs = Integer.parseInt(checkProp(config_prop, KEY.NUMBER_OF_INPUTS, true)); + this.NumOutputs = Integer.parseInt(checkProp(config_prop, KEY.NUMBER_OF_OUTPUTS, true)); + this.NumPoints = Integer.parseInt(checkProp(config_prop, KEY.NUMBER_OF_POINTS, true)); + } catch(NumberFormatException ex){ + throw new IOException(ERRORMSG.CONFIG_FILE_VALUE_NOTVALID); + } + + exp_config_size = DEFAULT_NUM_CONFIG_FIELDS + 5 * (this.NumInputs + this.NumOutputs) - 8; + + if (config_size < exp_config_size){ + throw new IOException(ERRORMSG.CONFIG_FILE_KEYNUMBERS); + } + } + + // Checking properties for each variable and storing the values + private void checkVarProp(Hashtable config_prop, int var_number) throws IOException { + String prop_key_name, prop_value; + Object prev_val; + + // Checking properties for the input and output variables + for (int nvar = 1; nvar <= var_number; nvar++){ + String var_type; + String var_id; + + prop_key_name = KEY.VAR_TYPE + KEY.VAR_DELIM + Integer.toString(nvar); + var_type = checkProp(config_prop, prop_key_name, true); + + Variable singlevar = new Variable(var_type); + + String[] var_keys = {KEY.VAR_MIN, KEY.VAR_MAX}; + for (int key = 0; key < var_keys.length; key++){ + prop_key_name = var_keys[key] + KEY.VAR_DELIM + Integer.toString(nvar); + + prop_value = checkProp(config_prop, prop_key_name, true); + + try{ + singlevar.put(var_keys[key], prop_value); + } catch(NumberFormatException ex){ + throw new IOException(ERRORMSG.CONFIG_FILE_VALUE_NOTVALID + " - " + prop_value); + } + } + + singlevar.setNumber(nvar); + + prop_key_name = KEY.VAR_ID + KEY.VAR_DELIM + Integer.toString(nvar); + var_id = checkProp(config_prop, prop_key_name, true); + + singlevar.setVarID(var_id); + + prev_val = var_type.equals(KEY.VAR_TYPE_IN) ? this.varInputs.put(var_id, singlevar) : this.varOutputs.put(var_id, singlevar); + } + } + + private String checkProp(Hashtable config_prop, String prop_key_name, boolean removeprop) throws IOException{ + + String prop_value = (String) config_prop.get(prop_key_name); + + if (prop_value == null){ + throw new IOException(ERRORMSG.CONFIG_FILE_KEYNOTFOUND + ERRORMSG.DELIM + prop_key_name); + } + + if (removeprop) + config_prop.remove(prop_key_name); + + return prop_value.trim(); + } + + // Checking and storing the points array + private void checkPointsArray(Hashtable config_prop, Enumeration varIDs) throws IOException{ + double[] singlerow; + double prev_value; + int csize = this.NumPoints; + StringTokenizer rowdata; + String singlevalue; + + while (varIDs.hasMoreElements()){ + String rowid = varIDs.nextElement().toString(); + String stringdata = checkProp(config_prop, rowid, true); + // Columns counter + int ncol = 0; + + if (stringdata == null){ + throw new IOException(ERRORMSG.CONFIG_FILE_POINTS_ROW_HEADER_NOTFOUND); + } + + rowdata = new StringTokenizer(stringdata, KEY.POINTS_ROW_DELIM); + + singlerow = new double[csize]; + + while(rowdata.hasMoreTokens()){ + singlevalue = rowdata.nextToken(); + + try{ + singlerow[ncol] = Double.parseDouble(singlevalue.trim()); + + } catch(NumberFormatException ex){ + throw new IOException(ERRORMSG.CONFIG_FILE_POINTS_VALUE_NOTVALID + ERRORMSG.DELIM + singlevalue); + } + + ncol++; + } + + if (ncol != csize) + throw new IOException(ERRORMSG.CONFIG_FILE_POINTS_COLUMN + ERRORMSG.DELIM + stringdata); + + this.PointsArray.put(rowid, singlerow); + } + } + + // Checking if points array are sorted + private void checkSortedPointsArray(String varID) throws IOException{ + double[] X; + + X = (double [])this.PointsArray.get(varID); + + for (int ncol = 1; ncol < X.length; ncol++){ + if ((X[ncol] - X[ncol - 1]) < 0){ + throw new IOException(ERRORMSG.CONFIG_FILE_POINTS_VALUES_UNSORTED + ERRORMSG.DELIM + varID); + } + } + } + + public Enumeration getInputsID() { + //To change body of generated methods, choose Tools | Templates. + return this.varInputs.keys(); + } + + public Enumeration getOutputsID() { + return this.varOutputs.keys(); + } + + public boolean setInput(String inputID, Object inputVal) { + Variable single_var = ((Variable)this.varInputs.get(inputID)); + + if (single_var != null) + single_var.setValue(inputVal); + else { + //ERRORMSG.setErrorMSG(ERRORMSG.VARIABLE_ID_NOTFOUND); + return false; + } + + return true; + } + + public boolean setInput(String inputID, double inputVal) { + Variable single_var = ((Variable)this.varInputs.get(inputID)); + + if (single_var != null) + single_var.setValue(inputVal); + else { + //ERRORMSG.setErrorMSG(ERRORMSG.VARIABLE_ID_NOTFOUND); + return false; + } + + return true; + } + + public Object getOutput(String outputID) { + //return new Double(((Variable) this.varOutputs.get(outputID)).getValue()); + Variable single_var = ((Variable)this.varOutputs.get(outputID)); + + if (single_var != null) + return new Double(single_var.getValue()); + /* + else + ERRORMSG.ErrorPrint(ERRORMSG.VARIABLE_ID_NOTFOUND); + */ + + return null; + } + + public Hashtable getInputsSet() { + Hashtable result = new Hashtable(); + Enumeration varIDs; + String varid; + + for (varIDs = this.varInputs.keys(); varIDs.hasMoreElements();){ + varid = (String)varIDs.nextElement(); + result.put(varid, new Double(((Variable) this.varInputs.get(varid)).getValue())); + } + + return result; + } + + public Hashtable getOutputsSet() { + Hashtable result = new Hashtable(); + Enumeration varIDs; + String varid; + + for (varIDs = this.varOutputs.keys(); varIDs.hasMoreElements();){ + varid = (String)varIDs.nextElement(); + result.put(varid, new Double(((Variable) this.varOutputs.get(varid)).getValue())); + } + + return result; + } + + public boolean setNormFactors(String varID, double normVal) { + Variable varprop = (Variable) this.varInputs.get(varID); + + if (varprop == null) + varprop = (Variable) this.varOutputs.get(varID); + + if (varprop != null) + varprop.setKnorm(normVal); + else { + //ERRORMSG.setErrorMSG(ERRORMSG.VARIABLE_ID_NOTFOUND); + return false; + } + + return true; + } + + public boolean setNormFactors(Hashtable normFactors) { + Enumeration varIDs; + Variable varprop; + String varid; + Object new_value; + + for (varIDs = normFactors.keys(); varIDs.hasMoreElements();){ + varid = varIDs.nextElement().toString(); + new_value = normFactors.get(varid); + + varprop = (Variable) this.varInputs.get(varid); + if (varprop == null) + varprop = (Variable) this.varOutputs.get(varid); + + if (varprop != null) + varprop.setKnorm(new_value); + else { + //ERRORMSG.setErrorMSG(ERRORMSG.VARIABLE_ID_NOTFOUND); + return false; + } + } + return true; + } + + /* + * Normalize input variables + */ + private void normInputs() { + Enumeration varIDs; + String varid; + + for (varIDs = this.varInputs.keys(); varIDs.hasMoreElements();){ + varid = varIDs.nextElement().toString(); + ((Variable) this.varInputs.get(varid)).normVar(); + } + } + + /* + * Denormalize output variables + */ + private void denormOutputs() { + Enumeration varIDs; + String varid; + + for (varIDs = this.varOutputs.keys(); varIDs.hasMoreElements();){ + varid = varIDs.nextElement().toString(); + ((Variable) this.varOutputs.get(varid)).denormVar(); + } + } + + public void evaluate() { + // This function will interpolate the input based on X, Y points + //double[] X = {0.0, 1.0, 3.0, 6.0}; + //double[] Y = {0.0, 1.0, 3.0, 6.0}; + double[] X; + double[] Y; + String outputid; + int xsize = this.NumPoints; + + Enumeration output_keys; + + this.normInputs(); + + for (output_keys = this.varOutputs.keys(); output_keys.hasMoreElements();){ + + outputid = output_keys.nextElement().toString(); + + Y = (double [])this.PointsArray.get(outputid); + + //for (Enumeration values = this.varInputs.elements(); values.hasMoreElements(); ) { + String inputid = this.varInputs.keys().nextElement().toString(); + + X = (double [])this.PointsArray.get(inputid); + + double xi = ((Variable)this.varInputs.elements().nextElement()).getValueNorm(); + //} + double yi = Interp1D(xi, X, xsize, Y); + + ((Variable) this.varOutputs.get(outputid)).setValueNorm(yi); + + ((Variable) this.varOutputs.get(outputid)).denormVar(); + } + + //this.denormOutputs(); + + + } + + // This function interpolates the input xi based on X, Y points array + // X is a vector ordered increasingly + private double Interp1D(double xi, double[] X, int xsize, double[] Y) { + double yi = 0.0; + + if (xi <= X[0]){ + yi = Y[0]; + } + else if (xi >= X[xsize - 1]){ + yi = Y[xsize - 1]; + } + else { + for (int j = 0; j < xsize - 1; j++){ + if ((xi > X[j]) && (xi <= X[j + 1])) { + yi = Y[j] + (xi - X[j]) * (Y[j + 1] - Y[j]) / (X[j + 1] - X[j]); + break; + } + } + } + + return yi; + } + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/KEY.java b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/KEY.java new file mode 100644 index 0000000..f42b7a8 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/KEY.java @@ -0,0 +1,49 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner; + +/** + * Class for keys and constants definition. + * + * @author Ra&uacte;l del Toro Matamoros + * @version 1.0.0 + */ +public final class KEY { + + // KEYS DEFINITION + public static final String NUMBER_OF_INPUTS = "NumInputs"; + public static final String NUMBER_OF_OUTPUTS = "NumOutputs"; + public static final String VAR_ID = "VarID"; + public static final String VAR_TYPE = "VarType"; + public static final String VAR_MIN = "VarMIN"; + public static final String VAR_MAX = "VarMAX"; + public static final String NUMBER_OF_POINTS = "NumPoints"; + public static final String POINTS_ARRAY = "PointsArray"; + //public static final String VAR_PROP = "VarProp"; + + // OTHER CONSTANTS DEFINITION + public static final String POINTS_ROW_DELIM = ", "; + public static final String VAR_DELIM = "_"; + public static final String VAR_TYPE_IN = "IN"; + public static final String VAR_TYPE_OUT = "OUT"; + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.java b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.java new file mode 100644 index 0000000..da69def --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingController.java @@ -0,0 +1,445 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner; + +import com.sun.spot.core.resources.Resources; +import com.sun.spot.core.util.Properties; +import com.sun.spot.ieee_802_15_4_radio.IRadioPolicyManager; +import com.sun.squawk.util.NotImplementedYetException; +import eu.artemis.demanes.datatypes.ANES_BUNDLE; +import eu.artemis.demanes.datatypes.ANES_URN; +import eu.artemis.demanes.datatypes.ANES_URN_Exception; +import eu.artemis.demanes.exceptions.ActionInvocationException; +import eu.artemis.demanes.exceptions.InexistentActionID; +import eu.artemis.demanes.exceptions.InexistentObservationID; +import eu.artemis.demanes.exceptions.ObservationInvocationException; +import eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources; +import eu.artemis.demanes.impl.SunSPOT.common.Events; +import eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.common.SystemProperties; +import eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Level; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; +import eu.artemis.demanes.reconfiguration.ActionProvider; +import eu.artemis.demanes.reconfiguration.ObservationProvider; +import eu.artemis.demanes.reconfiguration.Reasoner; + +/** + * + * This object class models the fuzzy logic controller that will make decisions + * whenever trigger is called. + * + * @author Vicente Hernández Díaz + * @author Yuanjiang Huang + *
UNIVERSIDAD POLITECNICA DE MADRID (UPM) + *
DEMANES 2014 + * @version 1.0 + */ +public class PowerScalingController implements Reasoner { + + private ActionProvider actionsProv = null; + private ObservationProvider obsProv = null; + private Properties props = null; + private double kE; + private double kdeltaND; + private int ND; + private double k_ND; + private double k_CR; + private final Logger logger; + + // delta_cr is the output of the whole controller + private double delta_cr; + + /** + * Public constructor using reconfiguration properties {@code props}. + * + * @param props The reconfiguration properties. + */ + public PowerScalingController(Properties props) { + + logger = SystemContext.getLogger(); + + if (props == null) { + logger.log(Level.DEBUG, "PowerScalingController: No properties specified."); + throw new IllegalArgumentException("PowerScalingController: No properties specified."); + } + + this.props = props; + + this.delta_cr = 0; + + //Extract mandatory properties from parameter into class attributtes. + String property = props.getProperty(ReasonerProperties.KE_PROPERTY); + if (property == null) { + logger.log(Level.DEBUG, "PowerScalingController: No kE provided"); + throw new IllegalArgumentException("PowerScalingController: No kE provided"); + } + try { + kE = Double.parseDouble(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG, "PowerScalingController: The value for kE is not a double: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for kE is not a double: " + property); + } + + property = props.getProperty(ReasonerProperties.KdeltaND_PROPERTY); + if (property == null) { + logger.log(Level.DEBUG, "PowerScalingController: No kdeltaND provided"); + throw new IllegalArgumentException("PowerScalingController: No kdeltaND provided"); + } + try { + kdeltaND = Double.parseDouble(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG, "PowerScalingController: The value for kdeltaND is not a double: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for kdeltaND is not a double: " + property); + } + + property = props.getProperty(ReasonerProperties.NDinitPROPERTY); + if (property == null) { + logger.log(Level.DEBUG, "PowerScalingController: No ND provided"); + throw new IllegalArgumentException("PowerScalingController: No ND provided"); + } + try { + ND = Integer.parseInt(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG, "PowerScalingController: The value for ND is not an integer: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for ND is not an integer: " + property); + } + + property = props.getProperty(ReasonerProperties.KND_PROPERTY); + if (property == null) { + logger.log(Level.DEBUG, "PowerScalingController: No k_ND provided"); + throw new IllegalArgumentException("PowerScalingController: No k_ND provided"); + } + try { + k_ND = Double.parseDouble(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG, "PowerScalingController: The value for k_ND is not a double: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for k_ND is not a double: " + property); + } + + property = props.getProperty(ReasonerProperties.KCR_PROPERTY); + if (property == null) { + logger.log(Level.DEBUG, "PowerScalingController: No k_CR provided"); + throw new IllegalArgumentException("PowerScalingController: No k_CR provided"); + } + try { + k_CR = Double.parseDouble(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG, "PowerScalingController: The value for k_CR is not a double: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for k_CR is not a double: " + property); + } + logger.log(Level.DEBUG, "PowerScalingController: An instance of PowerScalingController has been successfully instantiated."); + logger.log(Level.DEBUG, "PowerScalingController: Controller attributes: ND-> " + ND + ", kE->" + kE + ", kdeltaND->" + kdeltaND + ", k_CR->" + k_CR + ", k_ND->" + k_ND + ")."); + } + + /** + * Set the {@link ActuationProvider} for this {@code Reasoner}. + * + * @param ap The {@link ActuationProvider} + */ + public void setActuationProvider(ActionProvider ap) { + if (ap == null) { + logger.log(Level.DEBUG, "PowerScalingController.setActuationProvider: Action provider is null."); + throw new IllegalArgumentException("PowerScalingController.setActuationProvider: Action provider is null."); + } + actionsProv = ap; + logger.log(Level.DEBUG, "PowerScalingController.setActuationProvider: An action provider has been registered."); + } + + /** + * Set the {@link ObservationProvider} for this {@code Reasoner}. + * + * @param op The {@link ObservationProvider} + */ + public void setObservationProvider(ObservationProvider op) { + if (op == null) { + logger.log(Level.DEBUG, "PowerScalingController.setObservationProvider: Observation provider is null."); + throw new IllegalArgumentException("PowerScalingController.setObservationProvider: Observation provider is null."); + } + obsProv = op; + logger.log(Level.DEBUG, "PowerScalingController.setObservationProvider: An observation provider has been registered."); + } + + /** + * Used to fire the {@link Reasoner}. + */ + public void trigger() { + try { + ANES_URN event = (ANES_URN) obsProv.getValue(ANES_URN.create(DEMANESResources.TriggerReasonURN)); + Object value = (Object) obsProv.getValue(ANES_URN.create(DEMANESResources.TriggerReasonValueURN)); + + this.trigger(event, value); + } catch (ANES_URN_Exception ex) { + ex.printStackTrace(); + } catch (InexistentObservationID ex) { + ex.printStackTrace(); + } catch (ObservationInvocationException ex) { + ex.printStackTrace(); + } + } + + /** + * Used to fire the {@link Reasoner}. This is a proposed extension to + * the DEMANES middleware reasoning middleware. + * + * @param urn {@link ANES_URN} for the reason. + * @param value Value of the reason. + */ + public void trigger(ANES_URN urn, Object value) { + // BEGIN values for recording at the end of the trigger. + long timestamp = System.currentTimeMillis(); + int nodeDegree = -1; + double batteryLevel = -1; + int delta_nd = Integer.MIN_VALUE; + int transmissionPower = ((IRadioPolicyManager) Resources.lookup(IRadioPolicyManager.class)).getOutputPower(); + + try { + nodeDegree = ((Integer) obsProv.getValue(ANES_URN.create(DEMANESResources.NDObservationURN))).intValue(); + batteryLevel = ((Double) obsProv.getValue(ANES_URN.create(DEMANESResources.BLObservationURN))).doubleValue(); + } catch (ANES_URN_Exception ex) { + + } catch (InexistentObservationID ex) { + + } catch (ObservationInvocationException ex) { + + } + + if (urn == null) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: No URN provided."); + throw new IllegalArgumentException("PowerScalingController.trigger: No URN provided."); + } + + try { + if (!urn.equals(ANES_URN.create(Events.BL_EVENT)) + && !urn.equals(ANES_URN.create(Events.ND_EVENT))) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: Invalid URN value: " + urn); + throw new IllegalArgumentException("PowerScalingController.trigger: Invalid URN value: " + urn); + } + } catch (ANES_URN_Exception ex) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: ANES_URN.create failed when using Events enum values."); + throw new IllegalStateException("PowerScalingController.trigger: ANES_URN.create failed when using Events enum values."); + } + + if (value == null) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: No value provided."); + throw new IllegalArgumentException("PowerScalingController.trigger: No value provided."); + } + if (this.actionsProv == null) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: The method trigger has been called but no action provider has been set yet"); + throw new IllegalStateException("PowerScalingController.trigger: The method trigger has been called but no action provider has been set yet"); + } + if (this.obsProv == null) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: The method trigger has been called but no observation provider has been set yet"); + throw new IllegalStateException("PowerScalingController.trigger: The method trigger has been called but no observation provider has been set yet"); + } + + try { + + if (urn.equals(ANES_URN.create(Events.BL_EVENT))) { + if (!(value instanceof Double)) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: The error is not a double object."); + throw new IllegalArgumentException("PowerScalingController.trigger: The error is not a double object."); + } + double error = ((Double) value).doubleValue(); + logger.log(Level.DEBUG, "PowerScalingController.trigger: A BL_EVENT has been triggered. Value: " + value + " | Error: " + error); + int errorND = this.runSecondaryLoop(error); + // FOR LOGGING PURPOSES ONLY + delta_nd = errorND + nodeDegree - ND; + // FOR LOGGING PURPOSES ONLY + logger.log(Level.DEBUG, "PowerScalingController.trigger: Output from secondary loop (ND error): " + errorND); + this.runPrimaryLoop(errorND); + logger.log(Level.DEBUG, "PowerScalingController.trigger: Output from primary loop (deltaCR): " + this.delta_cr); + } + if (urn.equals(ANES_URN.create(Events.ND_EVENT))) { + if (!(value instanceof Integer)) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: The error is not an integer object."); + throw new IllegalArgumentException("PowerScalingController.trigger: The error is not an integer object."); + } + logger.log(Level.DEBUG, "PowerScalingController.trigger: A ND_EVENT has been triggered. Value: " + value); + int error = ((Integer) value).intValue(); + this.runPrimaryLoop(error); + logger.log(Level.DEBUG, "PowerScalingController.trigger: Output from primary loop (deltaCR): " + this.delta_cr); + } + } catch (ANES_URN_Exception ex) { + // This exception can not occur at this point as it has been tested. + } + + ANES_BUNDLE bundle = new SunSPOTBundle(); + + bundle.put(DEMANESResources.DELTA_CR_KEY, new Double(this.delta_cr)); + + try { + this.actionsProv.invoke(ANES_URN.create(DEMANESResources.PTActionURN), bundle); + } catch (ANES_URN_Exception ex) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: ANES_URN.create failed when using DEMANESResources enum values."); + throw new IllegalStateException("PowerScalingController.trigger: ANES_URN.create failed when using DEMANESResources enum values."); + } catch (InexistentActionID ex) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: No ActionID: " + ex.getMessage()); + throw new IllegalStateException("PowerScalingController.trigger: No ActionID: " + ex.getMessage()); + } catch (ActionInvocationException ex) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: Exception when invoking action: " + ex.getMessage()); + throw new IllegalStateException("PowerScalingController.trigger: Exception when invoking action: " + ex.getMessage()); + } + + StringBuffer recordInformation = new StringBuffer(); + recordInformation.append(SystemProperties.IEEE_ADDRESS_VALUE); + recordInformation.append(","); + recordInformation.append(timestamp); + recordInformation.append(","); + recordInformation.append(nodeDegree); + recordInformation.append(","); + recordInformation.append(transmissionPower); + recordInformation.append(","); + recordInformation.append(batteryLevel); + recordInformation.append(","); + recordInformation.append(delta_cr); + recordInformation.append(","); + if (delta_nd != Integer.MIN_VALUE) { + recordInformation.append(delta_nd); + } else{ + recordInformation.append("NaN"); + } + recordInformation.append(","); + recordInformation.append(urn.toString()); + recordInformation.append(","); + recordInformation.append(value.toString()); + + synchronized (this) { + logger.setDestination(Logger.RECORD); + logger.info(recordInformation.toString()); + logger.setDestination(Logger.SYSTEM_OUTPUT); + } + logger.info(recordInformation.toString()); + } + + /** + * Function of Decision Making. + * + * @param val Entry value. + * @return Response. + */ + private double FDM(double val) { + if (val >= 0.5) { + return 1; + } + + if (val <= -0.5) { + return -1; + } + + if ((val >= -0.25) && (val <= 0.25)) { + return 0; + } + + if ((val > -0.5) && (val < -0.25)) { + return 4 * val + 1; + } + + if ((val < 0.5) && (val > 0.25)) { + return 4 * val - 1; + } + + throw new IllegalArgumentException("Error in val parameter for FDM: " + val); + } + + /** + * Get the Node Degree (Number of neighbors). + * + * @return The node degree. + * @throws ANES_URN_Exception If the {@link ANES_URN} to the {@link Observation} is not valid. + * @throws InexistentObservationID If the {@link Observation} is not registered. + * @throws ObservationInvocationException If there is any other error calling the {@link Observation}. + */ + private int getND() throws ANES_URN_Exception, InexistentObservationID, ObservationInvocationException { + Object o = obsProv.getValue(new ANES_URN(DEMANESResources.NDObservationURN)); + if (!(o instanceof Integer)) { + throw new IllegalStateException("The observed node degree is not an integer."); + } + return ((Integer) o).intValue(); + } + + /** + * Run the reconfiguration algorithm primary loop. + * + * @param error The error used as an entry value. + */ + private void runPrimaryLoop(int error) { + + double e1 = error * k_ND; + double delta_u1 = FDM(e1); + + // set the output + this.delta_cr = delta_u1 * k_CR; + } + + /** + * Run the reconfiguration algorithm secondary loop. + * + * @param error The error used as an entry value. + */ + private int runSecondaryLoop(double error) { + /* + 1.- Calculate e2=ke * eE. + eE is the parameter value. + ke is a property. + */ + /* + In the future, we should replace by a FuzzyDM implementation. + */ + double e2 = error * kE; + /* + 2.- Calculate increment of U2 = the output from FDM2. + */ + double incrU2 = this.FDM(e2); + + /* + 3.- Calculate increment of Node Degree = increment of U2 * KincrND. + */ + int incrND = (int) Math.ceil(incrU2 * kdeltaND); + logger.info("PowerScalingController secondary loop incrND = " + incrND); + + /* + 4.- We get the new value for the node degree reference. + */ + int NDRef = ND + incrND; + props.setProperty(ReasonerProperties.ND_R_PROPERTY, Integer.toString(NDRef)); + + try { + /* + 5.- We need to get ND observation to run the Primary Loop + */ + return NDRef - getND(); + + /* + End of FuzzyDM implementation + */ + } catch (ANES_URN_Exception ex) { + throw new IllegalStateException("Error in URN: " + DEMANESResources.BLObservationURN + "Message: " + ex.getMessage()); + } catch (InexistentObservationID ex) { + throw new IllegalStateException("No existent ObservationID: " + ex.getMessage()); + } catch (ObservationInvocationException ex) { + throw new IllegalStateException("Error when observing the node degree: " + ex.getMessage()); + } + } + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFactory.java b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFactory.java new file mode 100644 index 0000000..41710f8 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFactory.java @@ -0,0 +1,56 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licenses/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner; + +import com.sun.spot.core.util.Properties; +import eu.artemis.demanes.reconfiguration.Reasoner; + +/** + * Factory to create an object of the specified Power Scaling Controller. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class PowerScalingControllerFactory { + + /** + * Creates an instance of the requested Power Scaling Controller. + * + * @param what Descriptor of the Power Scaling Controller to instantiate. + * @param props Reconfiguration properties. + * @return A Power Scaling Controller object as requested. + */ + public static Reasoner getInstance( String what, Properties props ){ + Reasoner result = null; + + if ( what.equalsIgnoreCase("PTSimple")) + result = new PowerScalingController(props); + + if ( what.equalsIgnoreCase("PTjFuzzyLogic")) + result = new PowerScalingControllerFuzzyLogic(props); + + if ( what.equalsIgnoreCase("PTInterp1DFDM")) + result = new PowerScalingControllerInterp1FDM(props); + + return result; + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFuzzyLogic.java b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFuzzyLogic.java new file mode 100644 index 0000000..b2c9911 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerFuzzyLogic.java @@ -0,0 +1,374 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner; + + +import com.sun.spot.core.util.Properties; +import com.sun.squawk.util.NotImplementedYetException; +import eu.artemis.demanes.datatypes.ANES_BUNDLE; +import eu.artemis.demanes.datatypes.ANES_URN; +import eu.artemis.demanes.datatypes.ANES_URN_Exception; +import eu.artemis.demanes.exceptions.ActionInvocationException; +import eu.artemis.demanes.exceptions.InexistentActionID; +import eu.artemis.demanes.exceptions.InexistentObservationID; +import eu.artemis.demanes.exceptions.ObservationInvocationException; +import eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources; +import eu.artemis.demanes.impl.SunSPOT.common.Events; +import eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Level; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; +import eu.artemis.demanes.reconfiguration.ActionProvider; +import eu.artemis.demanes.reconfiguration.ObservationProvider; +import eu.artemis.demanes.reconfiguration.Reasoner; + +/** + * + * This object class models the fuzzy logic controller that will make decisions + * whenever trigger is called. + * + * @author Vicente Hernández Díaz + * @author Yuanjiang Huang + *
UNIVERSIDAD POLITECNICA DE MADRID (UPM) + *
DEMANES 2014 + * @version 1.0 + */ + +public class PowerScalingControllerFuzzyLogic implements Reasoner{ + private ActionProvider actionsProv = null; + private ObservationProvider obsProv = null; + private Properties props = null; + private double kE; + private double kdeltaND; + private int ND; + private double k_ND; + private double k_CR; + private final Logger logger; + + // delta_cr is the output of the whole controller + private double delta_cr; + + /** + * Public constructor using reconfiguration properties {@code props}. + * + * @param props The reconfiguration properties. + */ + public PowerScalingControllerFuzzyLogic(Properties props) { + + logger = SystemContext.getLogger(); + + if (props == null) { + logger.log(Level.DEBUG,"PowerScalingController: No properties specified."); + throw new IllegalArgumentException("PowerScalingController: No properties specified."); + } + + this.props = props; + + this.delta_cr = 0; + + //Extract mandatory properties from parameter into class attributtes. + String property = props.getProperty(ReasonerProperties.KE_PROPERTY); + if (property == null) { + logger.log(Level.DEBUG,"PowerScalingController: No kE provided"); + throw new IllegalArgumentException("PowerScalingController: No kE provided"); + } + try { + kE = Double.parseDouble(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG,"PowerScalingController: The value for kE is not a double: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for kE is not a double: " + property); + } + + property = props.getProperty(ReasonerProperties.KdeltaND_PROPERTY); + if (property == null) { + logger.log(Level.DEBUG,"PowerScalingController: No kdeltaND provided"); + throw new IllegalArgumentException("PowerScalingController: No kdeltaND provided"); + } + try { + kdeltaND = Double.parseDouble(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG,"PowerScalingController: The value for kdeltaND is not a double: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for kdeltaND is not a double: " + property); + } + + property = props.getProperty(ReasonerProperties.NDinitPROPERTY); + if (property == null) { + logger.log(Level.DEBUG,"PowerScalingController: No ND provided"); + throw new IllegalArgumentException("PowerScalingController: No ND provided"); + } + try { + ND = Integer.parseInt(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG,"PowerScalingController: The value for ND is not an integer: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for ND is not an integer: " + property); + } + + property = props.getProperty(ReasonerProperties.KND_PROPERTY); + if (property == null) { + logger.log(Level.DEBUG,"PowerScalingController: No k_ND provided"); + throw new IllegalArgumentException("PowerScalingController: No k_ND provided"); + } + try { + k_ND = Double.parseDouble(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG,"PowerScalingController: The value for k_ND is not a double: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for k_ND is not a double: " + property); + } + + property = props.getProperty(ReasonerProperties.KCR_PROPERTY); + if (property == null) { + logger.log(Level.DEBUG,"PowerScalingController: No k_CR provided"); + throw new IllegalArgumentException("PowerScalingController: No k_CR provided"); + } + try { + k_CR = Double.parseDouble(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG,"PowerScalingController: The value for k_CR is not a double: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for k_CR is not a double: " + property); + } + logger.log(Level.DEBUG, "PowerScalingController: An instance of PowerScalingController has been successfully instantiated."); + logger.log(Level.DEBUG, "PowerScalingController: Controller attributes: ND-> "+ND+", kE->"+kE+", kdeltaND->"+kdeltaND+", k_CR->"+k_CR+", k_ND->"+k_ND+")."); + + + // Extraer de las propiedades el nombre del fichero .ini del primary loop + // Extraer de las propiedades el nombre del fichero .ini del secondary loop + // Abres el InputStream #1 y el InputStream #2 + } + + /** + * Set the {@link ActuationProvider} for this {@code Reasoner}. + * + * @param ap The {@link ActuationProvider} + */ + public void setActuationProvider(ActionProvider ap) { + if (ap == null) { + logger.log(Level.DEBUG, "PowerScalingController.setActuationProvider: Action provider is null."); + throw new IllegalArgumentException("PowerScalingController.setActuationProvider: Action provider is null."); + } + actionsProv = ap; + logger.log(Level.DEBUG, "PowerScalingController.setActuationProvider: An action provider has been registered."); + } + + /** + * Set the {@link ObservationProvider} for this {@code Reasoner}. + * + * @param op The {@link ObservationProvider} + */ + public void setObservationProvider(ObservationProvider op) { + if (op == null) { + logger.log(Level.DEBUG, "PowerScalingController.setObservationProvider: Observation provider is null."); + throw new IllegalArgumentException("PowerScalingController.setObservationProvider: Observation provider is null."); + } + obsProv = op; + logger.log(Level.DEBUG, "PowerScalingController.setObservationProvider: An observation provider has been registered."); + } + + /** + * Used to fire the {@link Reasoner}. + */ + public void trigger() { + try { + ANES_URN event = (ANES_URN) obsProv.getValue(ANES_URN.create(DEMANESResources.TriggerReasonURN)); + Object value = (Object) obsProv.getValue(ANES_URN.create(DEMANESResources.TriggerReasonValueURN)); + + this.trigger(event, value); + } catch (ANES_URN_Exception ex) { + ex.printStackTrace(); + } catch (InexistentObservationID ex) { + ex.printStackTrace(); + } catch (ObservationInvocationException ex) { + ex.printStackTrace(); + } + } + + /** + * Used to fire the {@link Reasoner}. This is a proposed extension to + * the DEMANES middleware reasoning middleware. + * + * @param urn {@link ANES_URN} for the reason. + * @param value Value of the reason. + */ + public void trigger(ANES_URN urn, Object value) { + if (urn == null) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: No URN provided."); + throw new IllegalArgumentException("PowerScalingController.trigger: No URN provided."); + } + + try { + if (!urn.equals(ANES_URN.create(Events.BL_EVENT)) + && !urn.equals(ANES_URN.create(Events.ND_EVENT))) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: Invalid URN value: " + urn); + throw new IllegalArgumentException("PowerScalingController.trigger: Invalid URN value: " + urn); + } + } catch (ANES_URN_Exception ex) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: ANES_URN.create failed when using Events enum values."); + throw new IllegalStateException("PowerScalingController.trigger: ANES_URN.create failed when using Events enum values."); + } + + if (value == null) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: No value provided." ); + throw new IllegalArgumentException("PowerScalingController.trigger: No value provided."); + } + if (this.actionsProv == null) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: The method trigger has been called but no action provider has been set yet"); + throw new IllegalStateException("PowerScalingController.trigger: The method trigger has been called but no action provider has been set yet"); + } + if (this.obsProv == null) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: The method trigger has been called but no observation provider has been set yet"); + throw new IllegalStateException("PowerScalingController.trigger: The method trigger has been called but no observation provider has been set yet"); + } + + try { + + if (urn.equals(ANES_URN.create(Events.BL_EVENT))) { + if (!(value instanceof Double)) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: The error is not a double object."); + throw new IllegalArgumentException("PowerScalingController.trigger: The error is not a double object."); + } + double error = ((Double) value).doubleValue(); + logger.log(Level.DEBUG, "PowerScalingController.trigger: A BL_EVENT has been triggered. Value: " + value); + int errorND = this.runSecondaryLoop(error); + logger.log(Level.DEBUG, "PowerScalingController.trigger: Output from secondary loop (ND error): " + errorND); + this.runPrimaryLoop(errorND); + logger.log(Level.DEBUG, "PowerScalingController.trigger: Output from primary loop (deltaCR): " + this.delta_cr); + } + if (urn.equals(ANES_URN.create(Events.ND_EVENT))) { + if (!(value instanceof Integer)) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: The error is not an integer object."); + throw new IllegalArgumentException("PowerScalingController.trigger: The error is not an integer object."); + } + logger.log(Level.DEBUG, "PowerScalingController.trigger: A ND_EVENT has been triggered. Value: " + value); + int error = ((Integer) value).intValue(); + this.runPrimaryLoop(error); + logger.log(Level.DEBUG, "PowerScalingController.trigger: Output from primary loop (deltaCR): " + this.delta_cr); + } + } catch (ANES_URN_Exception ex) { + // This exception can not occur at this point as it has been tested. + } + + ANES_BUNDLE bundle = new SunSPOTBundle(); + + bundle.put(DEMANESResources.DELTA_CR_KEY, new Double(this.delta_cr)); + + try { + this.actionsProv.invoke(ANES_URN.create(DEMANESResources.PTActionURN), bundle); + } catch (ANES_URN_Exception ex) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: ANES_URN.create failed when using DEMANESResources enum values."); + throw new IllegalStateException("PowerScalingController.trigger: ANES_URN.create failed when using DEMANESResources enum values."); + } catch (InexistentActionID ex) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: No ActionID: "+ex.getMessage()); + throw new IllegalStateException("PowerScalingController.trigger: No ActionID: "+ex.getMessage()); + } catch (ActionInvocationException ex) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: Exception when invoking action: "+ex.getMessage()); + throw new IllegalStateException("PowerScalingController.trigger: Exception when invoking action: "+ex.getMessage()); + } + + } + + private double FDM(double val) { + if (val >= 0.5) { + return 1; + } + + if (val <= -0.5) { + return -1; + } + + if ((val >= -0.25) && (val <= 0.25)) { + return 0; + } + + if (val > -0.5) { + return 4 * val + 1; + } + + if (val < 0.5) { + return 4 * val - 1; + } + + throw new IllegalArgumentException("Error in val parameter for FDM: " + val); + } + + private int getND() throws ANES_URN_Exception, InexistentObservationID, ObservationInvocationException { + Object o = obsProv.getValue(new ANES_URN(DEMANESResources.NDObservationURN)); + if ( !(o instanceof Integer)) + throw new IllegalStateException("The observed node degree is not an integer."); + return ((Integer)o).intValue(); + } + + private void runPrimaryLoop(int error) { + + double e1 = error * k_ND; + double delta_u1 = FDM(e1); + + // set the output + this.delta_cr = delta_u1 * k_CR; + + } + + private int runSecondaryLoop(double error) { + /* + 1.- Calculate e2=ke * eE. + eE is the parameter value. + ke is a property. + */ + /* + In the future, we should replace by a FuzzyDM implementation. + */ + double e2 = error * kE; + + /* + 2.- Calculate increment of U2 = the output from FDM2. + */ + double incrU2 = this.FDM(e2); + + /* + 3.- Calculate increment of Node Degree = increment of U2 * KincrND. + */ + int incrND = (int) Math.ceil(incrU2 * kdeltaND); + + /* + 4.- We get the new value for the node degree reference. + */ + int NDRef = ND + incrND; + props.setProperty(ReasonerProperties.ND_R_PROPERTY, Integer.toString(NDRef)); + + try { + /* + 5.- We need to get ND observation to run the Primary Loop + */ + return NDRef - getND(); + + /* + End of FuzzyDM implementation + */ + } catch (ANES_URN_Exception ex) { + throw new IllegalStateException("Error in URN: "+DEMANESResources.BLObservationURN+ "Message: "+ex.getMessage()); + } catch (InexistentObservationID ex) { + throw new IllegalStateException("No existent ObservationID: "+ex.getMessage()); + } catch (ObservationInvocationException ex) { + throw new IllegalStateException("Error when observing the node degree: "+ex.getMessage()); + } + } + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerInterp1FDM.java b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerInterp1FDM.java new file mode 100644 index 0000000..463084e --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/PowerScalingControllerInterp1FDM.java @@ -0,0 +1,518 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licenses/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner; + +import com.sun.spot.core.resources.Resources; +import com.sun.spot.core.util.Properties; +import com.sun.spot.ieee_802_15_4_radio.IRadioPolicyManager; +import com.sun.squawk.util.NotImplementedYetException; +import eu.artemis.demanes.datatypes.ANES_BUNDLE; +import eu.artemis.demanes.datatypes.ANES_URN; +import eu.artemis.demanes.datatypes.ANES_URN_Exception; +import eu.artemis.demanes.exceptions.ActionInvocationException; +import eu.artemis.demanes.exceptions.InexistentActionID; +import eu.artemis.demanes.exceptions.InexistentObservationID; +import eu.artemis.demanes.exceptions.ObservationInvocationException; +import eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources; +import eu.artemis.demanes.impl.SunSPOT.common.Events; +import eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.common.SystemProperties; +import eu.artemis.demanes.impl.SunSPOT.datatypes.SunSPOTBundle; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Level; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; +import eu.artemis.demanes.reconfiguration.ActionProvider; +import eu.artemis.demanes.reconfiguration.ObservationProvider; +import eu.artemis.demanes.reconfiguration.Reasoner; +import java.io.IOException; + +/** + * + * This object class models the fuzzy logic controller that will make decisions + * whenever trigger is called. + * + * @author Vicente Hernández Díaz + * @author Yuanjiang Huang + * @author Raúl del Toro Matamoros + *
UNIVERSIDAD POLITECNICA DE MADRID (UPM) + *
DEMANES 2014 + * @version 1.0 + */ +public class PowerScalingControllerInterp1FDM implements Reasoner { + + private ActionProvider actionsProv = null; + private ObservationProvider obsProv = null; + private Properties props = null; + private double kE; + private double kdeltaND; + private int ND; + private double k_ND; + private double k_CR; + private final Logger logger; + private FuzzyDM FDM_Prim_Loop; + private FuzzyDM FDM_Sec_Loop; + + // delta_cr is the output of the whole controller + private double delta_cr; + + /** + * Public constructor using reconfiguration properties {@code props}. + * + * @param props The reconfiguration properties. + */ + public PowerScalingControllerInterp1FDM(Properties props) { + + logger = SystemContext.getLogger(); + + if (props == null) { + logger.log(Level.DEBUG, "PowerScalingController: No properties specified."); + throw new IllegalArgumentException("PowerScalingController: No properties specified."); + } + + this.props = props; + + this.delta_cr = 0; + + //Extract mandatory properties from parameter into class attributtes. + String property = props.getProperty(ReasonerProperties.KE_PROPERTY); + if (property == null) { + logger.log(Level.DEBUG, "PowerScalingController: No kE provided"); + throw new IllegalArgumentException("PowerScalingController: No kE provided"); + } + try { + kE = Double.parseDouble(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG, "PowerScalingController: The value for kE is not a double: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for kE is not a double: " + property); + } + + property = props.getProperty(ReasonerProperties.KdeltaND_PROPERTY); + if (property == null) { + logger.log(Level.DEBUG, "PowerScalingController: No kdeltaND provided"); + throw new IllegalArgumentException("PowerScalingController: No kdeltaND provided"); + } + try { + kdeltaND = Double.parseDouble(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG, "PowerScalingController: The value for kdeltaND is not a double: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for kdeltaND is not a double: " + property); + } + + property = props.getProperty(ReasonerProperties.NDinitPROPERTY); + if (property == null) { + logger.log(Level.DEBUG, "PowerScalingController: No ND provided"); + throw new IllegalArgumentException("PowerScalingController: No ND provided"); + } + try { + ND = Integer.parseInt(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG, "PowerScalingController: The value for ND is not an integer: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for ND is not an integer: " + property); + } + + property = props.getProperty(ReasonerProperties.KND_PROPERTY); + if (property == null) { + logger.log(Level.DEBUG, "PowerScalingController: No k_ND provided"); + throw new IllegalArgumentException("PowerScalingController: No k_ND provided"); + } + try { + k_ND = Double.parseDouble(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG, "PowerScalingController: The value for k_ND is not a double: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for k_ND is not a double: " + property); + } + + property = props.getProperty(ReasonerProperties.KCR_PROPERTY); + if (property == null) { + logger.log(Level.DEBUG, "PowerScalingController: No k_CR provided"); + throw new IllegalArgumentException("PowerScalingController: No k_CR provided"); + } + try { + k_CR = Double.parseDouble(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG, "PowerScalingController: The value for k_CR is not a double: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for k_CR is not a double: " + property); + } + + property = props.getProperty(ReasonerProperties.FDM_PRIM_CONFIG_PROPERTY); + if (property == null) { + logger.log(Level.DEBUG, "PowerScalingController: No FDM_Prim_Prop_File provided"); + throw new IllegalArgumentException("PowerScalingController: No FDM_Prim_Prop_File provided"); + } + try { + FDM_Prim_Loop = new Interp1DFuzzyDM(property); + } catch (IOException ex) { + logger.log(Level.DEBUG, "PowerScalingController: " + ex.getMessage()); + throw new IllegalArgumentException("PowerScalingController: " + ex.getMessage()); + } + property = props.getProperty(ReasonerProperties.FDM_SEC_CONFIG_PROPERTY); + if (property == null) { + logger.log(Level.DEBUG, "PowerScalingController: No FDM_Sec_Prop_File provided"); + throw new IllegalArgumentException("PowerScalingController: No FDM_Sec_Prop_File provided"); + } + try { + FDM_Sec_Loop = new Interp1DFuzzyDM(property); + System.err.print(FDM_Sec_Loop); + } catch (IOException ex) { + String errmsg = "PowerScalingController: " + ex.getMessage(); + logger.log(Level.DEBUG, errmsg); + throw new IllegalArgumentException(errmsg); + } + property = props.getProperty(ReasonerProperties.du_CR_ID_PROPERTY); + if (property == null) { + String errmsg = "PowerScalingController: No " + ReasonerProperties.du_CR_ID_PROPERTY + " provided"; + logger.log(Level.DEBUG, errmsg); + throw new IllegalArgumentException(errmsg); + } + property = props.getProperty(ReasonerProperties.du_ND_ID_PROPERTY); + if (property == null) { + String errmsg = "PowerScalingController: No " + ReasonerProperties.du_ND_ID_PROPERTY + " provided"; + logger.log(Level.DEBUG, errmsg); + throw new IllegalArgumentException(errmsg); + } + property = props.getProperty(ReasonerProperties.e_E_ID_PROPERTY); + if (property == null) { + String errmsg = "PowerScalingController: No " + ReasonerProperties.e_E_ID_PROPERTY + " provided"; + logger.log(Level.DEBUG, errmsg); + throw new IllegalArgumentException(errmsg); + } + property = props.getProperty(ReasonerProperties.e_ND_ID_PROPERTY); + if (property == null) { + String errmsg = "PowerScalingController: No " + ReasonerProperties.e_ND_ID_PROPERTY + " provided"; + logger.log(Level.DEBUG, errmsg); + throw new IllegalArgumentException(errmsg); + } + logger.log(Level.DEBUG, "PowerScalingController: An instance of PowerScalingController has been successfully instantiated."); + logger.log(Level.DEBUG, "PowerScalingController: Controller attributes: ND-> " + ND + ", kE->" + kE + ", kdeltaND->" + kdeltaND + ", k_CR->" + k_CR + ", k_ND->" + k_ND + ")."); + } + + /** + * Set the {@link ActuationProvider} for this {@code Reasoner}. + * + * @param ap The {@link ActuationProvider} + */ + public void setActuationProvider(ActionProvider ap) { + if (ap == null) { + logger.log(Level.DEBUG, "PowerScalingController.setActuationProvider: Action provider is null."); + throw new IllegalArgumentException("PowerScalingController.setActuationProvider: Action provider is null."); + } + actionsProv = ap; + logger.log(Level.DEBUG, "PowerScalingController.setActuationProvider: An action provider has been registered."); + } + + /** + * Set the {@link ObservationProvider} for this {@code Reasoner}. + * + * @param op The {@link ObservationProvider} + */ + public void setObservationProvider(ObservationProvider op) { + if (op == null) { + logger.log(Level.DEBUG, "PowerScalingController.setObservationProvider: Observation provider is null."); + throw new IllegalArgumentException("PowerScalingController.setObservationProvider: Observation provider is null."); + } + obsProv = op; + logger.log(Level.DEBUG, "PowerScalingController.setObservationProvider: An observation provider has been registered."); + } + + /** + * Used to fire the {@link Reasoner}. + */ + public void trigger() { + try { + ANES_URN event = (ANES_URN) obsProv.getValue(ANES_URN.create(DEMANESResources.TriggerReasonURN)); + Object value = (Object) obsProv.getValue(ANES_URN.create(DEMANESResources.TriggerReasonValueURN)); + + this.trigger(event, value); + } catch (ANES_URN_Exception ex) { + ex.printStackTrace(); + } catch (InexistentObservationID ex) { + ex.printStackTrace(); + } catch (ObservationInvocationException ex) { + ex.printStackTrace(); + } + } + + /** + * Used to fire the {@link Reasoner}. This is a proposed extension to + * the DEMANES middleware reasoning middleware. + * + * @param urn {@link ANES_URN} for the reason. + * @param value Value of the reason. + */ + public void trigger(ANES_URN urn, Object value) { + // BEGIN values for recording at the end of the trigger. + long timestamp = System.currentTimeMillis(); + int nodeDegree = -1; + double batteryLevel = -1; + double delta_nd = Double.NaN; + int transmissionPower = ((IRadioPolicyManager) Resources.lookup(IRadioPolicyManager.class)).getOutputPower(); + + try { + nodeDegree = ((Integer) obsProv.getValue(ANES_URN.create(DEMANESResources.NDObservationURN))).intValue(); + batteryLevel = ((Double) obsProv.getValue(ANES_URN.create(DEMANESResources.BLObservationURN))).doubleValue(); + } catch (ANES_URN_Exception ex) { + + } catch (InexistentObservationID ex) { + + } catch (ObservationInvocationException ex) { + + } + + if (urn == null) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: No URN provided."); + throw new IllegalArgumentException("PowerScalingController.trigger: No URN provided."); + } + + try { + if (!urn.equals(ANES_URN.create(Events.BL_EVENT)) + && !urn.equals(ANES_URN.create(Events.ND_EVENT))) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: Invalid URN value: " + urn); + throw new IllegalArgumentException("PowerScalingController.trigger: Invalid URN value: " + urn); + } + } catch (ANES_URN_Exception ex) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: ANES_URN.create failed when using Events enum values."); + throw new IllegalStateException("PowerScalingController.trigger: ANES_URN.create failed when using Events enum values."); + } + + if (value == null) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: No value provided."); + throw new IllegalArgumentException("PowerScalingController.trigger: No value provided."); + } + if (this.actionsProv == null) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: The method trigger has been called but no action provider has been set yet"); + throw new IllegalStateException("PowerScalingController.trigger: The method trigger has been called but no action provider has been set yet"); + } + if (this.obsProv == null) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: The method trigger has been called but no observation provider has been set yet"); + throw new IllegalStateException("PowerScalingController.trigger: The method trigger has been called but no observation provider has been set yet"); + } + + try { + + if (urn.equals(ANES_URN.create(Events.BL_EVENT))) { + if (!(value instanceof Double)) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: The error is not a double object."); + throw new IllegalArgumentException("PowerScalingController.trigger: The error is not a double object."); + } + double error = ((Double) value).doubleValue(); + logger.log(Level.DEBUG, "PowerScalingController.trigger: A BL_EVENT has been triggered. Value: " + value + " | Error: " + error); + int errorND = this.runSecondaryLoop(error); + // FOR LOGGING PURPOSES ONLY + delta_nd = errorND + nodeDegree - ND; + // FOR LOGGING PURPOSES ONLY + logger.log(Level.DEBUG, "PowerScalingController.trigger: Output from secondary loop (ND error): " + errorND); + this.runPrimaryLoop(errorND); + logger.log(Level.DEBUG, "PowerScalingController.trigger: Output from primary loop (deltaCR): " + this.delta_cr); + } + if (urn.equals(ANES_URN.create(Events.ND_EVENT))) { + if (!(value instanceof Double)) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: The error is not an integer object."); + throw new IllegalArgumentException("PowerScalingController.trigger: The error is not an integer object."); + } + logger.log(Level.DEBUG, "PowerScalingController.trigger: A ND_EVENT has been triggered. Value: " + value); + double error = ((Double) value).doubleValue(); + this.runPrimaryLoop(error); + logger.log(Level.DEBUG, "PowerScalingController.trigger: Output from primary loop (deltaCR): " + this.delta_cr); + } + } catch (ANES_URN_Exception ex) { + // This exception can not occur at this point as it has been tested. + } + + ANES_BUNDLE bundle = new SunSPOTBundle(); + + bundle.put(DEMANESResources.DELTA_CR_KEY, new Double(this.delta_cr)); + + try { + this.actionsProv.invoke(ANES_URN.create(DEMANESResources.PTActionURN), bundle); + } catch (ANES_URN_Exception ex) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: ANES_URN.create failed when using DEMANESResources enum values."); + throw new IllegalStateException("PowerScalingController.trigger: ANES_URN.create failed when using DEMANESResources enum values."); + } catch (InexistentActionID ex) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: No ActionID: " + ex.getMessage()); + throw new IllegalStateException("PowerScalingController.trigger: No ActionID: " + ex.getMessage()); + } catch (ActionInvocationException ex) { + logger.log(Level.DEBUG, "PowerScalingController.trigger: Exception when invoking action: " + ex.getMessage()); + throw new IllegalStateException("PowerScalingController.trigger: Exception when invoking action: " + ex.getMessage()); + } + + StringBuffer recordInformation = new StringBuffer(); + recordInformation.append(SystemProperties.IEEE_ADDRESS_VALUE); + recordInformation.append(","); + recordInformation.append(timestamp); + recordInformation.append(","); + recordInformation.append(nodeDegree); + recordInformation.append(","); + recordInformation.append(transmissionPower); + recordInformation.append(","); + recordInformation.append(batteryLevel); + recordInformation.append(","); + recordInformation.append(delta_cr); + recordInformation.append(","); + if (delta_nd != Double.NaN) { + recordInformation.append(delta_nd); + } else { + recordInformation.append("NaN"); + } + recordInformation.append(","); + recordInformation.append(urn.toString()); + recordInformation.append(","); + recordInformation.append(value.toString()); + + synchronized (this) { + logger.setDestination(Logger.RECORD); + logger.info(recordInformation.toString()); + logger.setDestination(Logger.SYSTEM_OUTPUT); + } + logger.info(recordInformation.toString()); + } + + private int getND() throws ANES_URN_Exception, InexistentObservationID, ObservationInvocationException { + Object o = obsProv.getValue(new ANES_URN(DEMANESResources.NDObservationURN)); + if (!(o instanceof Integer)) { + throw new IllegalStateException("The observed node degree is not an integer."); + } + return ((Integer) o).intValue(); + } + + private void runPrimaryLoop(double error) { + + String e_ND_ID = this.props.getProperty(ReasonerProperties.e_ND_ID_PROPERTY); + String du_CR_ID = this.props.getProperty(ReasonerProperties.du_CR_ID_PROPERTY); + + // read the property each time it needs. This is for the runtime reconfiguration of the parameters. + String property = props.getProperty(ReasonerProperties.KND_PROPERTY); + if (property == null) { + logger.log(Level.DEBUG, "PowerScalingController: No k_ND provided"); + throw new IllegalArgumentException("PowerScalingController: No k_ND provided"); + } + try { + k_ND = Double.parseDouble(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG, "PowerScalingController: The value for k_ND is not a double: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for k_ND is not a double: " + property); + } + + property = props.getProperty(ReasonerProperties.KCR_PROPERTY); + if (property == null) { + logger.log(Level.DEBUG, "PowerScalingController: No k_CR provided"); + throw new IllegalArgumentException("PowerScalingController: No k_CR provided"); + } + try { + k_CR = Double.parseDouble(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG, "PowerScalingController: The value for k_CR is not a double: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for k_CR is not a double: " + property); + } + + // 1- Setting normalization factors + if (!this.FDM_Prim_Loop.setNormFactors(e_ND_ID, this.k_ND)) { + throw new IllegalStateException(ERRORMSG.VARIABLE_ERROR_ACCESS + ERRORMSG.DELIM + e_ND_ID); + } + if (!this.FDM_Prim_Loop.setNormFactors(du_CR_ID, this.k_CR)) { + throw new IllegalStateException(ERRORMSG.VARIABLE_ERROR_ACCESS + ERRORMSG.DELIM + du_CR_ID); + } + + // 2- Setting the input + if (!this.FDM_Prim_Loop.setInput(e_ND_ID, error)) { + throw new IllegalStateException(ERRORMSG.VARIABLE_ERROR_ACCESS + ERRORMSG.DELIM + e_ND_ID); + } + + // 3- "Reasoning": normalization, inference process & denormalization + this.FDM_Prim_Loop.evaluate(); + + // 4- Getting the output + this.delta_cr = ((Double) this.FDM_Prim_Loop.getOutput(du_CR_ID)).doubleValue(); + + } + + private int runSecondaryLoop(double error) { + + String e_E_ID = this.props.getProperty(ReasonerProperties.e_E_ID_PROPERTY); + String du_ND_ID = this.props.getProperty(ReasonerProperties.du_ND_ID_PROPERTY); + + /* + 1.- Setting normalization factors + */ + if (!this.FDM_Sec_Loop.setNormFactors(e_E_ID, this.kE)) { + throw new IllegalStateException(ERRORMSG.VARIABLE_ERROR_ACCESS + ERRORMSG.DELIM + e_E_ID); + } + if (!this.FDM_Sec_Loop.setNormFactors(du_ND_ID, this.kdeltaND)) { + throw new IllegalStateException(ERRORMSG.VARIABLE_ERROR_ACCESS + ERRORMSG.DELIM + du_ND_ID); + } + + /* + 2.- Setting the input + */ + if (!this.FDM_Sec_Loop.setInput(e_E_ID, (double) error)) { + throw new IllegalStateException(ERRORMSG.VARIABLE_ERROR_ACCESS + ERRORMSG.DELIM + e_E_ID); + } + + /* + 3.- "Reasoning" to calculate increment U2 = the output from FDM2 + Normalization -> inference process -> denormalization + */ + this.FDM_Sec_Loop.evaluate(); + + /* + 4.- Calculates increment of Node Degree = increment of U2 * KincrND. + */ + int incrND = (int) Math.ceil(((Double) this.FDM_Sec_Loop.getOutput(du_ND_ID)).doubleValue()); + + logger.info("PowerScalingController secondary loop incrND = " + incrND); + + /* + 5.- We get the new value for the node degree reference. + */ + String property = props.getProperty(ReasonerProperties.NDRefPROPERTY); + if (property == null) { + logger.log(Level.DEBUG, "PowerScalingController: No NDRef provided"); + throw new IllegalArgumentException("PowerScalingController: No NDRef provided"); + } + try { + ND = Integer.parseInt(property); + } catch (NumberFormatException e) { + logger.log(Level.DEBUG, "PowerScalingController: The value for NDRef is not a double: " + property); + throw new IllegalArgumentException("PowerScalingController: The value for NDRef is not a double: " + property); + } + + int ND_R = ND + incrND; + props.setProperty(ReasonerProperties.ND_R_PROPERTY, Integer.toString(ND_R)); + + try { + /* + 6.- We need to get ND observation to run the Primary Loop + */ + return ND_R - getND(); + + /* + End of FuzzyDM implementation + */ + } catch (ANES_URN_Exception ex) { + throw new IllegalStateException("Error in URN: " + DEMANESResources.BLObservationURN + "Message: " + ex.getMessage()); + } catch (InexistentObservationID ex) { + throw new IllegalStateException("No existent ObservationID: " + ex.getMessage()); + } catch (ObservationInvocationException ex) { + throw new IllegalStateException("Error when observing the node degree: " + ex.getMessage()); + } + } + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Variable.java b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Variable.java new file mode 100644 index 0000000..1449e3b --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/fuzzyReasoner/Variable.java @@ -0,0 +1,117 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.fuzzyReasoner; + +import java.util.Hashtable; + +/** + * @author Raúl del Toro Matamoros + * @version 1.0.0 + */ +public class Variable { + public static final String VAR_VALUE = "VarValue"; + public static final String VAR_VALUE_NORM = "VarValueNorm"; + public static final String VAR_KNORM = "VarKnorm"; + public static final String VAR_NUMBER = "VarNumber"; + + private Hashtable Prop; + + public Variable(String VarType){ + this.Prop = new Hashtable(); + + this.Prop.put(KEY.VAR_ID, "VAR_ID"); + this.Prop.put(KEY.VAR_MIN, new Double(Double.NEGATIVE_INFINITY)); + this.Prop.put(KEY.VAR_MAX, new Double(Double.POSITIVE_INFINITY)); + // "IN" or "OUT" + this.Prop.put(KEY.VAR_TYPE, VarType); + this.Prop.put(VAR_VALUE, new Double(Double.NaN)); + this.Prop.put(VAR_VALUE_NORM, new Double(Double.NaN)); + this.Prop.put(VAR_KNORM, new Double(1.0)); + this.Prop.put(VAR_NUMBER, new Integer(1)); + } + + public void setVarID(String Var_ID){ + this.Prop.put(KEY.VAR_ID, new String(Var_ID)); + } + + public void setKnorm(Object Knorm){ + this.Prop.put(VAR_KNORM, Double.valueOf((Knorm.toString()).trim())); + } + + public void setKnorm(double Knorm){ + this.Prop.put(VAR_KNORM, new Double(Knorm)); + } + + public double getValue(){ + return ((Double)this.Prop.get(VAR_VALUE)).doubleValue(); + } + + public double getValueNorm(){ + return ((Double)this.Prop.get(VAR_VALUE_NORM)).doubleValue(); + } + + public void setValue(Object VarValue){ + this.Prop.put(VAR_VALUE, Double.valueOf((VarValue.toString()).trim())); + } + + public void setValue(double VarValue){ + this.Prop.put(VAR_VALUE, Double.valueOf(VarValue)); + } + + public void setNumber(int VarNumber){ + this.Prop.put(VAR_NUMBER, new Integer(VarNumber)); + } + + public void setValueNorm(Double VarValue){ + this.Prop.put(VAR_VALUE_NORM, new Double(VarValue.doubleValue())); + } + + public void setValueNorm(double VarValue){ + this.Prop.put(VAR_VALUE_NORM, new Double(VarValue)); + } + + public void normVar(){ + double Knorm; + Double var_value; + + Knorm = ((Double)this.Prop.get(VAR_KNORM)).doubleValue(); + var_value = (Double)this.Prop.get(VAR_VALUE); + + if (!var_value.isNaN()) + this.Prop.put(VAR_VALUE_NORM, Double.valueOf((var_value.doubleValue()) * Knorm)); + } + + public void denormVar(){ + double Knorm; + Double var_value; + + Knorm = ((Double)this.Prop.get(VAR_KNORM)).doubleValue(); + var_value = (Double)this.Prop.get(VAR_VALUE_NORM); + + if (!var_value.isNaN()) + this.Prop.put(VAR_VALUE, Double.valueOf((var_value.doubleValue()) * Knorm)); + } + + public void put(String key, String value) { + this.Prop.put(key, Double.valueOf(value)); + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.java b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.java new file mode 100644 index 0000000..cede6ba --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/ORAMediatorForSunSPOT.java @@ -0,0 +1,394 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.reconfiguration; + +import com.sun.spot.core.util.Properties; +import eu.artemis.demanes.datatypes.ANES_BUNDLE; +import eu.artemis.demanes.datatypes.ANES_URN; +import eu.artemis.demanes.exceptions.ActionInvocationException; +import eu.artemis.demanes.exceptions.InexistentActionID; +import eu.artemis.demanes.exceptions.InexistentObservationID; +import eu.artemis.demanes.exceptions.ObservationInvocationException; +import eu.artemis.demanes.impl.SunSPOT.common.MediatorProperties; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; +import eu.artemis.demanes.reconfiguration.Action; +import eu.artemis.demanes.reconfiguration.ActionProvider; +import eu.artemis.demanes.reconfiguration.Actuator; +import eu.artemis.demanes.reconfiguration.ORAMediator; +import eu.artemis.demanes.reconfiguration.Observation; +import eu.artemis.demanes.reconfiguration.ObservationProvider; +import eu.artemis.demanes.reconfiguration.Observer; +import eu.artemis.demanes.reconfiguration.Reasoner; +import eu.artemis.demanes.reconfiguration.TriggerPolicy; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.Vector; + +/** + * An object of class {@code ORAMediatorForSunSPOT} acts as a mediator + * between the {@link TriggerPolicy}, the {@link Reasoner}, a set of + * {@link Observer} objects and a set of {@link Actuator} objects. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class ORAMediatorForSunSPOT implements ORAMediator, ActionProvider, ObservationProvider { + + private static final String UPDATE_LIST_DYNAMIC_BEHAVIOUR = "dynamic"; + private static final String UPDATE_LIST_STATIC_BEHAVIOUR = "static"; + + private static final String DEFAULT_UPDATE_LIST_BEHAVIOUR = UPDATE_LIST_STATIC_BEHAVIOUR; + + private Reasoner reasoner; + private TriggerPolicy triggerPolicy; + private Hashtable actionMap; + private Hashtable observationMap; + private Vector actuators; + private Vector observers; + private Vector actions; + private Vector observations; + + private Logger logger; + + private String updateListBehaviour; + + /** + * Public constructor. + */ + public ORAMediatorForSunSPOT() { + this.reasoner = null; + this.triggerPolicy = null; + this.actionMap = new Hashtable(); + this.observationMap = new Hashtable(); + this.actuators = new Vector(); + this.observers = new Vector(); + this.actions = new Vector(); + this.observations = new Vector(); + this.logger = SystemContext.getLogger(); + + this.updateListBehaviour = DEFAULT_UPDATE_LIST_BEHAVIOUR; + } + + /** + * Public constructor using a set of reasoning {@code properties}. + * + * @param properties The reasoning properties. + */ + public ORAMediatorForSunSPOT(Properties properties) { + this(); + + this.updateListBehaviour = properties.getProperty(MediatorProperties.UPDATE_LIST_BEHAVIOUR_PROPERTY, DEFAULT_UPDATE_LIST_BEHAVIOUR); + } + + /** + * Set the {@link Reasoner} associated to this ORA Mediator. + * + * @param reasoner The reasoner. + */ + public void setReasoner(Reasoner reasoner) { + logger.info("Setting reasoner " + reasoner.getClass().getName()); + + // First unregister the current reasoner from the triggerPolicy + if (this.triggerPolicy != null) { + this.triggerPolicy.unregisterTriggerable(this.reasoner); + } + + // Set the actuation provider of the reasoner to the current ORAMediator + if (reasoner != null) { + reasoner.setActuationProvider((ActionProvider) this); + reasoner.setObservationProvider((ObservationProvider) this); + } + + // Set current reasoner + this.reasoner = reasoner; + + // Register the reasoner with the TriggerPolicy + if (this.triggerPolicy != null) { + this.triggerPolicy.registerTriggerable(reasoner); + } + } + + /** + * Set the {@link TriggerPolicy} associated to this ORA Mediator. + * + * @param triggerPolicy The TriggerPolicy + */ + public void setTriggeringPolicy(TriggerPolicy triggerPolicy) { + logger.info("Setting trigger policy " + triggerPolicy.getClass().getName()); + + // First unregister the current reasoner from the old triggerPolicy + if (this.triggerPolicy != null) { + this.triggerPolicy.stop(); + this.triggerPolicy.unregisterTriggerable(this.reasoner); + } + + // Set current reasoner + this.triggerPolicy = triggerPolicy; + + // Register the reasoner with the new TriggerPolicy + if (this.triggerPolicy != null) { + this.triggerPolicy.registerTriggerable(this.reasoner); + this.triggerPolicy.start(); + } + } + + /** + * Get a list of {@link Action} objects registered in this ORA Mediator. + * + * @return Array of ANES_URN of the registered {@link Action} objects. + */ + public Vector getActions() { + + if (this.updateListBehaviour.equalsIgnoreCase(UPDATE_LIST_DYNAMIC_BEHAVIOUR)) { + actions.removeAllElements(); + + Enumeration actuatorList = actuators.elements(); + + // Loop through the actuator array. + while (actuatorList.hasMoreElements()) { + Actuator actuator = (Actuator) actuatorList.nextElement(); + + Enumeration actionList = actuator.getActions().elements(); + + // For each actuator, get the list of actuations. + while (actionList.hasMoreElements()) { + Action action = (Action) actionList.nextElement(); + + // Add the action to the action map. + // The key is the urn string, and the value is the action itself + logger.debug("Adding action to map: " + action.getActionID().toString() + " -> " + action.getClass().getName()); + observationMap.put(action.getActionID(), action); + + // Add the observation ANES_URN to the observation array + actions.addElement(action.getActionID()); + } + } + } + return this.actions; + } + + /** + * Invoke a resource {@link Action} identified by its {@link ANES_URN} + * passing the {@link ANES_BUNDLE} set of arguments. + * + * @param id The urn of the invoked {@link Action} resource. + * @param arguments The set of arguments for the action. + * @throws InexistentActionID If no action is registered with the requested id. + * @throws ActionInvocationException If there is any other exception when invoking the {@link Action} + */ + public void invoke(ANES_URN id, ANES_BUNDLE arguments) throws InexistentActionID, ActionInvocationException { + logger.debug("Requested invocation for urn " + id.toString().trim()); + + if (this.updateListBehaviour.equalsIgnoreCase(UPDATE_LIST_DYNAMIC_BEHAVIOUR)) { + // Update the observations array. + getActions(); + } + + if (actionMap.containsKey(id)) { + logger.debug("Requested invocation urn found... processing..."); + try { + ((Action) actionMap.get(id)).invoke(arguments); + } catch (Exception e) { + throw new ActionInvocationException(id, e); + } + } else { + logger.debug("Requested invocation urn NOT FOUND... throwing exception"); + throw new InexistentActionID(id); + } + + } + + /** + * Get the list of registered {@link Observation} objects in this ORA + * Mediator. + * + * @return Array of ANES_URN of the registered {@link Observation} objects. + */ + public Vector getObservations() { + if (this.updateListBehaviour.equalsIgnoreCase(UPDATE_LIST_DYNAMIC_BEHAVIOUR)) { + observations.removeAllElements(); + + Enumeration observerList = observers.elements(); + + // Loop through the observer array. + while (observerList.hasMoreElements()) { + Observer observer = (Observer) observerList.nextElement(); + + Enumeration observationList = observer.getObservations().elements(); + + // For each observer, get the list of observations. + while (observationList.hasMoreElements()) { + Observation observation = (Observation) observationList.nextElement(); + + // Add the observation to the observation map. + // The key is the urn string, and the value is the observation itself + logger.debug("Adding observation to map: " + observation.getObservationID().toString() + " -> " + observation.getClass().getName()); + observationMap.put(observation.getObservationID(), observation); + + // Add the observation ANES_URN to the observation array + observations.addElement(observation.getObservationID()); + } + } + } + return this.observations; + } + + /** + * Get value observed by the {@link Observation} identified by the + * {@link ANES_URN} passed as its id. + * + * @param id The {@link ANES_URN} for the queried {@link Observation} + * @return The value provided by the {@link Observation}. + * @throws InexistentObservationID If no observation corresponds to the requested ID. + * @throws ObservationInvocationException If there is any other exception querying the observation. + */ + public Object getValue(ANES_URN id) throws InexistentObservationID, ObservationInvocationException { + logger.debug("Requested getValue for urn " + id.toString().trim()); + + if (this.updateListBehaviour.equalsIgnoreCase(UPDATE_LIST_DYNAMIC_BEHAVIOUR)) { + // Update the observations array. + getObservations(); + } + + if (observationMap.containsKey(id)) { + logger.debug("Requested getValue urn found... processing..."); + try { + return ((Observation) observationMap.get(id)).getValue(); + } catch (Exception e) { + throw new ObservationInvocationException(id, e); + } + } else { + logger.debug("Requested getValue urn NOT FOUND... throwing exception"); + throw new InexistentObservationID(id); + } + } + + /** + * Register an {@link Observer} in the ORA Mediator. + * + * @param observer The {@link Observer} to be registered. + */ + public void registerObserver(Observer observer) { + + if (!observers.contains(observer)) { + logger.info("Registering observer: " + observer.getClass().getName()); + this.observers.addElement(observer); + + Enumeration observationList = observer.getObservations().elements(); + + while (observationList.hasMoreElements()) { + Observation observation = (Observation) observationList.nextElement(); + + logger.info("Adding observation to map: " + observation.getObservationID().toString() + " -> " + observation.getClass().getName()); + observationMap.put(observation.getObservationID(), observation); + observations.addElement(observation.getObservationID()); + } + } else { + logger.info("Registering observer: Observer " + observer.getClass().getName() + " already registered."); + } + } + + /** + * Removes an {@link Observer} from the ORA Mediator. + * + * @param observer The {@link Observer} to be removed. + */ + public void unregisterObserver(Observer observer) { + if (observers.contains(observer)) { + logger.info("Unregistering observer: " + observer.getClass().getName()); + + Enumeration observationList = observer.getObservations().elements(); + + while (observationList.hasMoreElements()) { + Observation observation = (Observation) observationList.nextElement(); + + if (observationMap.containsKey(observation.getObservationID())) { + logger.info("Removing observation from map: " + observation.getObservationID().toString() + " -> " + observation.getClass().getName()); + observationMap.remove(observation.getObservationID()); + } + + if (observations.contains(observation)) { + observations.removeElement(observation); + } + } + + this.observers.removeElement(observer); + } else { + logger.info("Unregistering observer: Observer " + observer.getClass().getName() + " is not registered."); + } + } + + /** + * Register an {@link Actuator} in the ORA Mediator. + * + * @param actuator The {@link Actuator} to be registered. + */ + public void registerActuator(Actuator actuator) { + if (!actuators.contains(actuator)) { + logger.info("Registering actuator: " + actuator.getClass().getName()); + this.actuators.addElement(actuator); + + Enumeration actionList = actuator.getActions().elements(); + + while (actionList.hasMoreElements()) { + Action action = (Action) actionList.nextElement(); + + logger.info("Adding action to map: " + action.getActionID().toString() + " -> " + action.getClass().getName()); + actionMap.put(action.getActionID(), action); + actions.addElement(action.getActionID()); + } + } else { + logger.info("Registering actuator: Actuator " + actuator.getClass().getName() + " already registered."); + } + } + + /** + * Removes an {@link Actuator} from the ORA Mediator. + * + * @param actuator The {@link Actuator} to be removed. + */ + public void unregisterActuator(Actuator actuator) { + if (actuators.contains(actuator)) { + logger.info("Unregistering actuator: " + actuator.getClass().getName()); + + Enumeration actionList = actuator.getActions().elements(); + + while (actionList.hasMoreElements()) { + Action action = (Action) actionList.nextElement(); + + if (actionMap.containsKey(action.getActionID())) { + logger.info("Removing action from map: " + action.getActionID().toString() + " -> " + action.getClass().getName()); + actionMap.remove(action.getActionID()); + } + + if (actions.contains(action)) { + actions.removeElement(action); + } + } + + this.actuators.removeElement(actuator); + } else { + logger.info("Unregistering actuator: Actuator " + actuator.getClass().getName() + " is not registered."); + } + } +} \ No newline at end of file diff --git a/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor.java b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor.java new file mode 100644 index 0000000..3654e1f --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/PowerScalingMonitor/PowerScalingMonitor.java @@ -0,0 +1,755 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licenses/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.reconfiguration.PowerScalingMonitor; + +import com.sun.spot.core.resources.Resources; +import com.sun.spot.core.resources.transducers.LEDColor; +import com.sun.spot.core.util.Properties; +import com.sun.spot.core.util.Utils; +import com.sun.spot.espot.peripheral.ESpot; +import com.sun.spot.ieee_802_15_4_radio.IRadioPolicyManager; +import com.sun.spot.ieee_802_15_4_radio.util.IEEEAddress; +import com.sun.spot.multihop.radio.mhrp.lqrp.LQRPManager; +import com.sun.squawk.util.MathUtils; +import eu.artemis.demanes.datatypes.ANES_URN; +import eu.artemis.demanes.datatypes.ANES_URN_Exception; +import eu.artemis.demanes.exceptions.ObservationInvocationException; +import eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources; +import eu.artemis.demanes.impl.SunSPOT.common.Events; +import eu.artemis.demanes.impl.SunSPOT.common.RadioProperties; +import eu.artemis.demanes.impl.SunSPOT.common.ReasonerProperties; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.common.SystemProperties; +import eu.artemis.demanes.impl.SunSPOT.common.TriggerPolicyProperties; +import eu.artemis.demanes.impl.SunSPOT.communications.CommunicationManager; +import eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions.ResetActuator; +import eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.BatteryLevelObservation; +import eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservation; +import eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations.NodeDegreeObservationExtension; +import eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeAddMessageException; +import eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.MarqueeMessage; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Level; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; +import eu.artemis.demanes.reconfiguration.Observation; +import eu.artemis.demanes.reconfiguration.Observer; +import eu.artemis.demanes.reconfiguration.TriggerPolicy; +import eu.artemis.demanes.reconfiguration.Triggerable; +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.util.Vector; + +/** + * Power Scaling Monitor is a {@link TriggerPolicy} that fires the + * {@link Reasoner} when certain conditions occur. At the same time it is also a + * {@link Observer} that provides the required {@link Observations} for the + * reasoning. + * + * @author Vicente Hernández Díz + * @author Yuanjiang Huang + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class PowerScalingMonitor implements TriggerPolicy, Observer { + + public static final int STARTED = 1; + public static final int CREATED = 2; + public static final int SUSPENDED = 3; + public static final int DIED = 4; + + private static final long DEFAULT_INTERVAL = 1000; + + private static final LEDColor ND_COLOR = LEDColor.TEAL; + private static final LEDColor BATTERY_COLOR = LEDColor.ORANGE; + private static final LEDColor PTX_COLOR = LEDColor.MAGENTA; + + private int state; + + private Vector triggerables; + private Properties reconfigurationProperties; + + private long interval; + private Observation ND; + private Observation BL; + private Observation reasonObservation; + private Observation reasonObservationValue; + + private ANES_URN cause = null; + private double error; + private Vector observationList; + + private Logger logger; + + private int CR_at_previous_k; // CR(k-1) + + private double ND_Error_at_previous_k; // e(k-1) + private int dcr_at_previous_k; // dcr(k-1) + private int CR_at_previous_k2; // CR(k-2) + private int ND_R_previous_k; // ND_R(k-1) + private int NDRef_at_previous_k; // NDRef(k-1) -- Used only for updating the value after an external updating of the parameter + + // fixed parameters for the controller + private double KSI_ND; + private int ND_MIN; + private int CR_MAX; + private int delta_ND_min; + private double k_e; + private double alpha_KSI_ND; + private int DELTA_CR_MIN; + private double E_cr; + + private int ND_at_k; + private int count; + private boolean CR_at_previous_k2_is_ready; // CR(k-2) is ready only after 2 rounds triggery policy. + private int triggeryRuleCount; + + private SystemContext context; + + private LQRPManager routingManager; + + private MarqueeMessage nodeDegreeMessage; + private MarqueeMessage batteryLevelMessage; + private MarqueeMessage transmissionPowerMessage; + + private Integer nodeDegreeMessageID; + private Integer batteryLevelMessageID; + private Integer transmissionPowerMessageID; + + public PowerScalingMonitor(SystemContext context, Properties reconfigurationProperties) { + this.triggerables = new Vector(); + this.state = PowerScalingMonitor.CREATED; + this.reconfigurationProperties = reconfigurationProperties; + this.context = context; + + this.routingManager = LQRPManager.getInstance(); + + this.logger = SystemContext.getLogger(); + + this.CR_at_previous_k = Integer.MAX_VALUE; + this.CR_at_previous_k2 = Integer.MAX_VALUE; + dcr_at_previous_k = Integer.MAX_VALUE; + this.count = 3; + this.CR_at_previous_k2_is_ready = false; // CR(k-2) + this.triggeryRuleCount = 1; //record the triggery rule execution times + + String property; + property = reconfigurationProperties.getProperty(TriggerPolicyProperties.ND_MIN_PROPERTY); + ND_MIN = Integer.parseInt(property); + + property = reconfigurationProperties.getProperty(TriggerPolicyProperties.CR_MAX_PROPERTY); + CR_MAX = Integer.parseInt(property); + + property = reconfigurationProperties.getProperty(TriggerPolicyProperties.DELTA_ND_MIN_PROPERTY); + delta_ND_min = Integer.parseInt(property); + + property = reconfigurationProperties.getProperty(ReasonerProperties.KE_PROPERTY); + k_e = Double.parseDouble(property); + + property = reconfigurationProperties.getProperty(TriggerPolicyProperties.KSI_ND_PROPERTY); + KSI_ND = Double.parseDouble(property); + + property = reconfigurationProperties.getProperty(TriggerPolicyProperties.DELTA_CR_MIN_PROPERTY); + DELTA_CR_MIN = Integer.parseInt(property); + + // obtain the critical battery level + property = reconfigurationProperties.getProperty(ReasonerProperties.E_CR_PROPERTY); + E_cr = Double.parseDouble(property); + + // Read the ND_Ref property + property = reconfigurationProperties.getProperty(ReasonerProperties.NDRefPROPERTY); + NDRef_at_previous_k = Integer.parseInt(property); + + try { + this.cause = ANES_URN.create(Events.BL_EVENT); + } catch (ANES_URN_Exception ex) { + this.cause = null; + } + error = 0; + + this.interval = Long.parseLong(reconfigurationProperties.getProperty(TriggerPolicyProperties.TRIGGER_INTERVAL_PROPERTY, String.valueOf(DEFAULT_INTERVAL))); + logger.debug("Monitor interval set to " + interval + " milliseconds"); + + observationList = new Vector(); + ND = new NodeDegreeObservation(reconfigurationProperties, DEMANESResources.NDObservationURN); + ((NodeDegreeObservation) ND).start(); + BL = new BatteryLevelObservation(reconfigurationProperties, DEMANESResources.BLObservationURN); + reasonObservation = new ReasonObservation(); + reasonObservationValue = new ReasonObservationValue(); + addObservation(ND); + addObservation(BL); + addObservation(reasonObservation); + addObservation(reasonObservationValue); + + try { + nodeDegreeMessage = new MarqueeMessage(); + batteryLevelMessage = new MarqueeMessage(); + transmissionPowerMessage = new MarqueeMessage(); + nodeDegreeMessageID = (Integer) SystemContext.getMarquee().addMessage(nodeDegreeMessage); + batteryLevelMessageID = (Integer) SystemContext.getMarquee().addMessage(batteryLevelMessage); + transmissionPowerMessageID = (Integer) SystemContext.getMarquee().addMessage(transmissionPowerMessage); + } catch (MarqueeAddMessageException ex) { + // DO NOTHING + } + + } + + public void registerTriggerable(Triggerable t) { + this.triggerables.addElement(t); + } + + public void resume() { + + if (this.state == PowerScalingMonitor.SUSPENDED) { + this.state = PowerScalingMonitor.STARTED; + } + + } + + public void start() { + + if (this.state != PowerScalingMonitor.CREATED) { + return; + } + + this.state = PowerScalingMonitor.STARTED; + + new Thread( + new Runnable() { + public void run() { + short sequenceNumber = 0; + + showOnMarqueeBinary(ND_at_k, ND_COLOR, nodeDegreeMessage, nodeDegreeMessageID); + showOnMarqueeBinary(((IRadioPolicyManager) Resources.lookup(IRadioPolicyManager.class)).getOutputPower() - RadioProperties.MINIMUM_POWER_TRANSMISSION, PTX_COLOR, transmissionPowerMessage, transmissionPowerMessageID); + showOnMarqueePercentage(((ESpot) Resources.lookup(ESpot.class)).getPowerController().getBattery().getAvailableCapacity(), + ((ESpot) Resources.lookup(ESpot.class)).getPowerController().getBattery().getMaximumCapacity(), + BATTERY_COLOR, + batteryLevelMessage, + batteryLevelMessageID); + + logger.info("Status monitoring message sent!"); + logger.info("Number of neighbors at k: " + ND_at_k); + logger.info("PTX at k: " + (((IRadioPolicyManager) Resources.lookup(IRadioPolicyManager.class)).getOutputPower() - RadioProperties.MINIMUM_POWER_TRANSMISSION)); + + while (true) { + sequenceNumber++; + if (reconfigurationProperties.getProperty("reset").equalsIgnoreCase("true")) { + logger.info("#> RESETING transmission values"); + reconfigurationProperties.setProperty("reset", "false"); + + int ptx = Integer.parseInt(reconfigurationProperties.getProperty("ptx")); + + ((IRadioPolicyManager) Resources.lookup(IRadioPolicyManager.class)).setOutputPower(ptx); + CR_at_previous_k = Integer.MAX_VALUE; + CR_at_previous_k2 = Integer.MAX_VALUE; + dcr_at_previous_k = Integer.MAX_VALUE; + count = 3; + CR_at_previous_k2_is_ready = false; // CR(k-2) + + ((ResetActuator) context.getPTACT()).reset(); + } + + ((NodeDegreeObservation) ND).updateNodeDegree(); + + interval = Long.parseLong(reconfigurationProperties.getProperty(TriggerPolicyProperties.TRIGGER_INTERVAL_PROPERTY, String.valueOf(DEFAULT_INTERVAL))); + logger.debug("Monitor interval set to " + interval + " milliseconds"); + + Utils.sleep(interval - 500); + + if (reconfigurationProperties.getProperty("reasoning.status").equalsIgnoreCase("started")) { + + switch (getState()) { + case PowerScalingMonitor.STARTED: + if (triggerRules()) { + ((Triggerable) triggerables.firstElement()).trigger(); + } + break; + case PowerScalingMonitor.DIED: + state = PowerScalingMonitor.CREATED; + break; + case PowerScalingMonitor.SUSPENDED: + break; + case PowerScalingMonitor.CREATED: + break; + default: + break; + } + + } + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + DataOutputStream daos = new DataOutputStream(baos); + + String destination = reconfigurationProperties.getProperty(SystemProperties.BASESTATION_ADDR_PROPERTY, SystemProperties.DEFAULT_BS_ADDRESS); + String port = reconfigurationProperties.getProperty(SystemProperties.BASESTATION_PORT, Integer.toString(SystemProperties.DEFAULT_BS_PORT)); + + daos = getStatusMessage(sequenceNumber, destination); + recordStatus(sequenceNumber, destination); + + showOnMarqueeBinary(ND_at_k, ND_COLOR, nodeDegreeMessage, nodeDegreeMessageID); + showOnMarqueeBinary(((IRadioPolicyManager) Resources.lookup(IRadioPolicyManager.class)).getOutputPower() - RadioProperties.MINIMUM_POWER_TRANSMISSION, PTX_COLOR, transmissionPowerMessage, transmissionPowerMessageID); + showOnMarqueePercentage(((ESpot) Resources.lookup(ESpot.class)).getPowerController().getBattery().getAvailableCapacity(), + ((ESpot) Resources.lookup(ESpot.class)).getPowerController().getBattery().getMaximumCapacity(), + BATTERY_COLOR, + batteryLevelMessage, + batteryLevelMessageID); + + (context.getCommunicationManager()).send(baos, 0, CommunicationManager.MODE_UNICAST, destination + ":" + port, 0, 0); + logger.info("Status monitoring message sent!"); + logger.info("Number of neighbors at k: " + ND_at_k); + logger.info("PTX at k: " + (((IRadioPolicyManager) Resources.lookup(IRadioPolicyManager.class)).getOutputPower() - RadioProperties.MINIMUM_POWER_TRANSMISSION)); + } + } + + private void showOnMarqueeBinary(int value, LEDColor color, MarqueeMessage message, Integer messageID) { + if (value > MathUtils.pow(2, MarqueeMessage.MESSAGE_LENGTH)) { + value = (byte) MathUtils.pow(2, MarqueeMessage.MESSAGE_LENGTH); + } + for (int index = 0; index < MarqueeMessage.MESSAGE_LENGTH; index++) { + int remainder = value % 2; + + if (remainder == 1) { + message.setMessageAtPosition((MarqueeMessage.MESSAGE_LENGTH - 1) - index, color); + } else { + message.setMessageAtPosition((MarqueeMessage.MESSAGE_LENGTH - 1) - index, new LEDColor(0, 0, 0)); + } + value = value / 2; + } + SystemContext.getMarquee().updateMessage(messageID, message); + } + + private void showOnMarqueePercentage(double actual, double maximum, LEDColor color, MarqueeMessage message, Integer messageID) { + double percentage = actual * 100 / maximum; + int totalLights = 0; + if (percentage > 80) { + totalLights = 5; + } else if (percentage > 60) { + totalLights = 4; + } else if (percentage > 40) { + totalLights = 3; + } else if (percentage > 20) { + totalLights = 2; + } else if (percentage > 0) { + totalLights = 1; + } else { + totalLights = 0; + } + + for (int index = 0; index < totalLights; index++) { + message.setMessageAtPosition(index, color); + } + + SystemContext.getMarquee().updateMessage(messageID, message); + } + } + ).start(); + } + + private boolean triggerRules() { + + int ND_R_at_k = Integer.MAX_VALUE; + int NDRef; + String property = null; + boolean result = false; + + try { + + // The nd_real indicates the current ND + ND_at_k = Integer.parseInt(ND.getValue().toString()); + logger.debug("triggerRules: ND read as " + ND_at_k); + + // The bl_real indicates the current power transmission in dBm + double bl_real = Double.parseDouble(BL.getValue().toString()); + logger.debug("triggerRules: BL read as " + bl_real); + + // PLEASE, THE LOAD OF THE PARAMETERS MUST BE DONE IN A SEPARATE METHOD. + // ALSO IT MUST BE SPLITTED INTO FIXED AND DYNAMIC PARAMETERS. + // obtain the node degree reference + property = reconfigurationProperties.getProperty(ReasonerProperties.ND_R_PROPERTY); + ND_R_at_k = Integer.parseInt(property); + logger.debug("PSMonitor: Parsed property " + ReasonerProperties.ND_R_PROPERTY + " as " + ND_R_at_k); + + // The following lines load the parameters that the trigger rules need + property = reconfigurationProperties.getProperty(TriggerPolicyProperties.KSI_ND_PROPERTY); + double KSI_ND = Double.parseDouble(property); + + // -------------------------------------------------------------- + // CALCULATION of variables requiered for the triggering policy + // ---------------------------------------------------------------- + // Node Degree error at k + double e_ND = ND_R_at_k - ND_at_k; + // Baterry Level error at k + double e_BL = E_cr - bl_real; + + // Communication Range at k + int CR_at_k = ((IRadioPolicyManager) Resources.lookup(IRadioPolicyManager.class)).getOutputPower(); + + logger.info("triggerRules: read CR_at_k = " + CR_at_k); + // now use the index + CR_at_k = RadioProperties.getPTXIndex(RadioProperties.getRadioChannel(), CR_at_k); + + logger.info("triggerRules: convert CR_at_k into index, now CR_at_k = " + CR_at_k); + + logger.info("Run the triggery rule: " + this.triggeryRuleCount); + this.triggeryRuleCount++; + + // If previous Communication Range is Integer.MAX_VALUE, this means + // that this is the first reading of the Communication Range, so the + // previous value of the Communication Range should be set to the + // actual one. + // And other variables are initialized here. + if (CR_at_previous_k == Integer.MAX_VALUE) { + + CR_at_previous_k = CR_at_k; + CR_at_previous_k2 = Integer.MAX_VALUE; + ND_Error_at_previous_k = e_ND; + ND_R_previous_k = ND_R_at_k; // ND reference + } + + this.count--; + if (this.count == 0) { + this.CR_at_previous_k2_is_ready = true; + logger.info("dcr_at_previous_k2 now available !"); //dcr_at_previous_k2 now is valid + } + if (this.CR_at_previous_k2_is_ready) { + + // To calcuate dcr = cr(k-1) - cr(k-2), use the index, other than real values + dcr_at_previous_k = CR_at_previous_k - CR_at_previous_k2; + + logger.info("calcuate dcr_at_previous_k, CR_at_previous_k = " + CR_at_previous_k); + logger.info("calcuate dcr_at_previous_k, CR_at_previous_k2 = " + CR_at_previous_k2); + // CR_at_previous_k2 = CR_at_previous_k; + } + + // Filtered Communication Range + int CR_f = MathUtils.round((CR_at_k + CR_at_previous_k) / 2); + + CR_at_previous_k2 = CR_at_previous_k; + CR_at_previous_k = CR_at_k; + + // Checking the rules in the order specified by the + // reconfiguration algorithm v10. + // ---------------------------------------------------------------- + // The first rule: + // ---------------------------------------------------------------- + // Updating power transmission when the reference value has been adapted. + //(Rule No. 1 or secondary loop execution) + if ((Math.abs(e_ND) <= KSI_ND) + && (CR_f >= CR_MAX) + && ((ND_R_previous_k != ND_R_at_k) || (e_ND < ND_Error_at_previous_k))) { + double previous_e_ND = e_ND; + // e_ND = -1 * alpha_KSI_ND * KSI_ND_at_k; + e_ND = -1 * (alpha_KSI_ND * DELTA_CR_MIN + DELTA_CR_MIN); + + logger.info("triggerRules 1st triggered"); + + logger.info("triggerPolicy.SaturationRule1: e_ND adjusted to " + e_ND + " when CR_f is " + CR_f + " and previous e_ND was " + previous_e_ND + " with KSI_ND_at_k being " + KSI_ND); + } + + // ---------------------------------------------------------------- + // The second rule: + // ---------------------------------------------------------------- + logger.info("ND_Error_at_previous_k = " + ND_Error_at_previous_k); + logger.info("e_ND = " + e_ND); + logger.info("dcr_at_previous_k = " + dcr_at_previous_k); + logger.info("ND_Error_at_previous_k = " + ND_Error_at_previous_k); + logger.info("dcr_at_previous_k = " + dcr_at_previous_k); + logger.info("CR_at_previous_k = " + CR_at_previous_k); + logger.info("CR_at_previous_k2 = " + CR_at_previous_k2); + logger.info("DELTA_CR_MIN = " + DELTA_CR_MIN); + logger.info("KSI_ND = " + KSI_ND); + + if (((ND_Error_at_previous_k * e_ND > 0) && (dcr_at_previous_k == 0)) + || ((e_ND < -KSI_ND) && (ND_Error_at_previous_k > KSI_ND) && (dcr_at_previous_k == DELTA_CR_MIN)) + || ((e_ND > KSI_ND) && (ND_Error_at_previous_k < -KSI_ND) && (dcr_at_previous_k == -DELTA_CR_MIN))) { + + result = false; + + logger.info("triggerRules 2nd triggered: DO NOTHING "); + + } else { + // When the error in ND is greater than the tolerance at k or the + // ND is below the minimum, then the primary loop must be triggered. + if ((Math.abs(e_ND) > KSI_ND) || (ND_at_k < ND_MIN)) { + try { + this.cause = ANES_URN.create(Events.ND_EVENT); + this.error = e_ND; + result = true; + logger.info("triggerRules 2nd rule triggered: ND event"); + } catch (ANES_URN_Exception ex) { + ex.printStackTrace(); + } + } + } + + // updating + ND_Error_at_previous_k = e_ND; // e(k-1) update at this point + ND_R_previous_k = ND_R_at_k; // ND_R(k-1) update at this point + + // ---------------------------------------------------------------- + // The third rule: + // ---------------------------------------------------------------- + // When the battery reaches some critical value, then the secondary + // loop must be executed. + if (Math.abs(e_BL) <= 1.0 / k_e) { + + try { + this.cause = ANES_URN.create(Events.BL_EVENT); + this.error = e_BL; + result = true; + logger.info("triggerRules 3rd rule trigger"); + } catch (ANES_URN_Exception ex) { + ex.printStackTrace(); + } + } + + // EXTRA RULE to update the ND_R value upon a modification of the ND_Ref property + property = reconfigurationProperties.getProperty(ReasonerProperties.NDRefPROPERTY); + NDRef = Integer.parseInt(property); + if (NDRef != NDRef_at_previous_k) { + try { + this.cause = ANES_URN.create(Events.BL_EVENT); + this.error = e_BL; + result = true; + logger.info("NDRef updated -> trigger 2nd loop for updating ND_r"); + } catch (ANES_URN_Exception ex) { + ex.printStackTrace(); + } + } + NDRef_at_previous_k = NDRef; + + } catch (ObservationInvocationException ex) { + ex.printStackTrace(); + } catch (Exception ex) { + ex.printStackTrace(); + } + + return result; + } + + public void stop() { + + if (this.state == PowerScalingMonitor.STARTED) { + this.state = PowerScalingMonitor.DIED; + } + + } + + public void suspend() { + + if (this.state == PowerScalingMonitor.STARTED) { + this.state = PowerScalingMonitor.SUSPENDED; + } + } + + public void unregisterTriggerable(Triggerable t) { + + for (int cursor = 0; cursor < triggerables.size(); cursor++) { + if (((Triggerable) triggerables.elementAt(cursor)).equals(t)) { + triggerables.removeElementAt(cursor); + break; + } + } + + } + + public Vector getObservations() { + return observationList; + } + + private void addObservation(Observation observation) { + this.observationList.addElement(observation); + } + + public void setState(int state) { + this.state = state; + } + + public int getState() { + return this.state; + } + + public void setInterval(long interval) { + this.interval = interval; + } + + private DataOutputStream getStatusMessage(int sequenceNumber, String destination) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + DataOutputStream daos = new DataOutputStream(baos); + + try { + switch (Byte.parseByte(reconfigurationProperties.getProperty(SystemProperties.EXECUTION_CONTEXT, Integer.toString(SystemProperties.DEFAULT_EXECUTION_CONTEXT)))) { + case SystemProperties.EXECUTION_CONTEXT_CMS: + String ABATurn = "urn:dmns:abat"; + String MBATurn = "urn:dmns:mbat"; + String NDEGurn = "urn:dmns:ndeg"; + String NPTXurn = "urn:dmns:nptx"; + String SYSIDurn = "urn:dmns:sysid"; + String IEEELocalAddress = IEEEAddress.toDottedHex(((IRadioPolicyManager) Resources.lookup(IRadioPolicyManager.class)).getIEEEAddress()); + + daos.writeByte(0xA0); + daos.writeByte(0x02); + daos.writeShort(sequenceNumber); + daos.writeByte(0xFF); + daos.write("urn:dmns:log?".getBytes(), 0, 13); + daos.writeByte(SYSIDurn.length()); + daos.write(SYSIDurn.getBytes(), 0, SYSIDurn.length()); + daos.writeByte(IEEELocalAddress.length()); + daos.write(IEEELocalAddress.getBytes(), 0, IEEELocalAddress.length()); + daos.writeByte(ABATurn.length()); + daos.write(ABATurn.getBytes(), 0, ABATurn.length()); + daos.writeByte(0x08); // Length of double + daos.writeDouble((((ESpot) Resources.lookup(ESpot.class)).getPowerController().getBattery().getAvailableCapacity())); + daos.writeByte(MBATurn.length()); + daos.write(MBATurn.getBytes(), 0, MBATurn.length()); + daos.writeByte(0x08); + daos.writeDouble((((ESpot) Resources.lookup(ESpot.class)).getPowerController().getBattery().getMaximumCapacity())); + daos.writeByte(NDEGurn.length()); + daos.write(NDEGurn.getBytes(), 0, NDEGurn.length()); + daos.writeByte(0x04); + daos.writeInt(ND_at_k); + daos.writeByte(NPTXurn.length()); + daos.write(NPTXurn.getBytes(), 0, NPTXurn.length()); + daos.writeByte(1); + daos.writeByte(((IRadioPolicyManager) Resources.lookup(IRadioPolicyManager.class)).getOutputPower()); + break; + case SystemProperties.EXECUTION_CONTEXT_EXPERIMENTAL: + daos.writeLong(sequenceNumber); + daos.writeLong(System.currentTimeMillis()); + daos.writeByte(ND_at_k); + daos.writeDouble((((ESpot) Resources.lookup(ESpot.class)).getPowerController().getBattery().getMaximumCapacity())); + daos.writeDouble((((ESpot) Resources.lookup(ESpot.class)).getPowerController().getBattery().getAvailableCapacity())); + daos.writeByte(((IRadioPolicyManager) Resources.lookup(IRadioPolicyManager.class)).getOutputPower()); + daos.writeByte(Integer.parseInt(reconfigurationProperties.getProperty(ReasonerProperties.ND_R_PROPERTY))); + daos.writeByte(Integer.parseInt(reconfigurationProperties.getProperty(TriggerPolicyProperties.KSI_ND_PROPERTY))); + daos.writeDouble(Double.parseDouble(reconfigurationProperties.getProperty(ReasonerProperties.KCR_PROPERTY))); + daos.writeDouble(Double.parseDouble(reconfigurationProperties.getProperty(ReasonerProperties.E_CR_PROPERTY))); + routingManager.findRoute(IEEEAddress.toLong(destination), null, Long.valueOf(sequenceNumber)); + Utils.sleep(500); + daos.writeLong(routingManager.getRouteInfo(IEEEAddress.toLong(destination)).nextHop); + break; + default: + break; + } + } catch (IOException ex) { + return null; + } + + return daos; + } + + public void recordStatus(int sequenceNumber, String destination) { + try { + Vector neighborList = ((NodeDegreeObservationExtension) ND).getNeighborList(); + StringBuffer csvdata = new StringBuffer(); + csvdata.append(sequenceNumber); + csvdata.append(','); + csvdata.append(System.currentTimeMillis()); + csvdata.append(','); + csvdata.append(ND_at_k); + csvdata.append(','); + csvdata.append((((ESpot) Resources.lookup(ESpot.class)).getPowerController().getBattery().getMaximumCapacity())); + csvdata.append(','); + csvdata.append((((ESpot) Resources.lookup(ESpot.class)).getPowerController().getBattery().getAvailableCapacity())); + csvdata.append(','); + csvdata.append(((IRadioPolicyManager) Resources.lookup(IRadioPolicyManager.class)).getOutputPower()); + csvdata.append(','); + csvdata.append(Integer.parseInt(reconfigurationProperties.getProperty(ReasonerProperties.ND_R_PROPERTY))); + csvdata.append(','); + csvdata.append(Integer.parseInt(reconfigurationProperties.getProperty(TriggerPolicyProperties.KSI_ND_PROPERTY))); + csvdata.append(','); + csvdata.append(Double.parseDouble(reconfigurationProperties.getProperty(ReasonerProperties.KCR_PROPERTY))); + csvdata.append(','); + csvdata.append(Double.parseDouble(reconfigurationProperties.getProperty(ReasonerProperties.E_CR_PROPERTY))); + csvdata.append(','); + csvdata.append(IEEEAddress.toDottedHex(routingManager.getRouteInfo(IEEEAddress.toLong(destination)).nextHop)); + csvdata.append(','); + for (int i = 0; i < neighborList.size(); i++) { + csvdata.append((String) neighborList.elementAt(i)); + csvdata.append(','); + } + + logger.setDestination(Logger.RECORD); + ByteArrayOutputStream baos2 = new ByteArrayOutputStream(); + DataOutputStream daos2 = new DataOutputStream(baos2); + daos2.write(csvdata.toString().getBytes()); + logger.log(Level.ALL, baos2); + logger.setDestination(Logger.SYSTEM_OUTPUT); + } catch (IOException ex) { + // Do nothing + } + } + + // PRIVATE CLASSES + private class ReasonObservation implements Observation { + + /** + * Gets the ID of an observation. + * + * @return the ANES_URN of observation. + */ + public ANES_URN getObservationID() { + try { + return ANES_URN.create(DEMANESResources.TriggerReasonURN); + } catch (ANES_URN_Exception ex) { + logger.log(Level.SEVERE, "NodeDegreeObservation.getObservationID: ANES_URN.create reported and error with DEMANESResources.BLObservationURN."); + return null; + } + } + + /** + * Get the reason {@link ANES_URN}. + * + * @return The reason {@link ANES_URN}. + * @throws ObservationInvocationException + */ + public Object getValue() throws ObservationInvocationException { + return cause; + } + } + + private class ReasonObservationValue implements Observation { + + /** + * Gets the ID of an observation. + * + * @return the ANES_URN of observation. + */ + public ANES_URN getObservationID() { + try { + return ANES_URN.create(DEMANESResources.TriggerReasonValueURN); + } catch (ANES_URN_Exception ex) { + logger.log(Level.SEVERE, "NodeDegreeObservation.getObservationID: ANES_URN.create reported and error with DEMANESResources.BLObservationURN."); + return null; + } + } + + /** + * Get the reason error value. + * + * @return The reason error value. + * @throws ObservationInvocationException + */ + public Object getValue() throws ObservationInvocationException { + return Double.valueOf(error); + } + } + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator.java b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator.java new file mode 100644 index 0000000..736162a --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/PowerTransmissionActuator.java @@ -0,0 +1,187 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licenses/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions; + +import com.sun.spot.core.resources.Resources; +import com.sun.spot.core.util.Properties; +import com.sun.spot.ieee_802_15_4_radio.IRadioPolicyManager; +import com.sun.squawk.util.MathUtils; +import eu.artemis.demanes.datatypes.ANES_BUNDLE; +import eu.artemis.demanes.datatypes.ANES_URN; +import eu.artemis.demanes.datatypes.ANES_URN_Exception; +import eu.artemis.demanes.exceptions.ActionInvocationException; +import eu.artemis.demanes.exceptions.NonExistentKeyException; +import eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources; +import eu.artemis.demanes.impl.SunSPOT.common.PTActionProperties; +import eu.artemis.demanes.impl.SunSPOT.common.RadioProperties; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Level; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; +import eu.artemis.demanes.reconfiguration.Action; +import eu.artemis.demanes.reconfiguration.Actuator; +import java.util.Vector; + +/** + * PowerTransmissionActuator + * + * @author Néstor Lucas Martínez + * @version 1.0 + */ +public class PowerTransmissionActuator implements Actuator, ResetActuator { + + private Action updatePowerTransmission; + private Vector actions; + + private final Logger logger; + + public PowerTransmissionActuator(Properties contextProperties) { + this.actions = new Vector(); + + this.logger = SystemContext.getLogger(); + + // Create the required actions for this actuator + updatePowerTransmission = new updatePowerTransmissionAction(contextProperties); + + // Add the recently created actions to the actions list + this.actions.addElement(updatePowerTransmission); + } + + /** + * Get the list of actions provided by this actuator. + * + * @return A Vector containing the list of actions. + */ + public Vector getActions() { + return this.actions; + } + + /** + * Reset the transmission power to the initial value. + */ + public void reset() { + ((ResetActuator) updatePowerTransmission).reset(); + } + + /** + * Implements the action to update the transmission power. + */ + private static class updatePowerTransmissionAction implements Action, ResetActuator { + + private static IRadioPolicyManager radioPolicyManager; + private static int radioChannel; + private static final String DEFAULT_URN = DEMANESResources.PTActionURN; + private static String DEFAULT_CR0; + + private static ANES_URN urn; + private static double cr; + private static double CR0; + + private Logger logger; + + private updatePowerTransmissionAction(Properties contextProperties) { + logger = SystemContext.getLogger(); + + radioPolicyManager = (IRadioPolicyManager) Resources.lookup(IRadioPolicyManager.class); + radioChannel = RadioProperties.getRadioChannel(); + + DEFAULT_CR0 = Double.toString(RadioProperties.getMinimumPTXIndex(radioChannel)); + CR0 = Double.parseDouble(contextProperties.getProperty(PTActionProperties.CR0_PROPERTY, DEFAULT_CR0)); + + try { + urn = new ANES_URN(DEFAULT_URN); + } catch (ANES_URN_Exception ex) { + urn = null; + if (logger.getLevel().intValue() <= Level.DEBUG.intValue()) { + ex.printStackTrace(); + } + } + + cr = 0; + } + + /** + * Resets the Power Transmission Actuator. + */ + public void reset() { + cr = 0; + } + + /** + * Get the {@code ANES_URN} for this actuator. + * + * @return The {@code ANES_URN}. + */ + public ANES_URN getActionID() { + return updatePowerTransmissionAction.urn; + } + + /** + * Invokes the actuator, thus executing the corresponding action. + * + * @param arguments The set of arguments required for the action. + * @throws ActionInvocationException + */ + public void invoke(ANES_BUNDLE arguments) throws ActionInvocationException { + double delta_cr; + double CRsplat; + int powerTransmissionIndex; + + logger.debug("PTAction invoked... Actual cr = " + cr); + + if (arguments.containsKey(DEMANESResources.DELTA_CR_KEY)) { + try { + delta_cr = ((Double) arguments.get(DEMANESResources.DELTA_CR_KEY)).doubleValue(); + } catch (NonExistentKeyException ex) { + delta_cr = Double.NaN; + } + + logger.debug("PTAction delta_cr argument: " + delta_cr); + + if (delta_cr != Double.NaN) { + // Update cr + cr += delta_cr; + + // Update CR + CRsplat = cr + CR0; + + // calculate actual power transmission + powerTransmissionIndex = (int) MathUtils.round(CRsplat); + + if (powerTransmissionIndex > RadioProperties.getMaximumPTXIndex(radioChannel)) { + powerTransmissionIndex = RadioProperties.getMaximumPTXIndex(radioChannel); + cr -= delta_cr; + } + + if (powerTransmissionIndex < RadioProperties.getMinimumPTXIndex(radioChannel)) { + powerTransmissionIndex = RadioProperties.getMinimumPTXIndex(radioChannel); + cr -= delta_cr; + } + + radioPolicyManager.setOutputPower(RadioProperties.getPTXatIndex(radioChannel, powerTransmissionIndex)); + + logger.debug("PTAction new CR* = " + CRsplat + " rounded to " + powerTransmissionIndex); + logger.debug("PTAction output power read: " + radioPolicyManager.getOutputPower()); + } + } + } + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/ResetActuator.java b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/ResetActuator.java new file mode 100644 index 0000000..61b92dd --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/actions/ResetActuator.java @@ -0,0 +1,37 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licenses/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.reconfiguration.actions; + +/** + * Extends the {@link Actuator} interface to include a method to reset + * its actions to the initial state. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public interface ResetActuator { + + /** + * Resets the actuator to its initial state. + */ + public void reset(); +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/BatteryLevelObservation.java b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/BatteryLevelObservation.java new file mode 100644 index 0000000..90345de --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/BatteryLevelObservation.java @@ -0,0 +1,100 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licenses/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations; + +import com.sun.spot.core.resources.Resources; +import com.sun.spot.core.util.Properties; +import com.sun.spot.espot.peripheral.Battery; +import com.sun.spot.espot.peripheral.Battery8; +import com.sun.spot.espot.peripheral.ESpot; +import com.sun.spot.espot.peripheral.IPowerController; +import eu.artemis.demanes.datatypes.ANES_URN; +import eu.artemis.demanes.datatypes.ANES_URN_Exception; +import eu.artemis.demanes.exceptions.ObservationInvocationException; +import eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Level; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; +import eu.artemis.demanes.reconfiguration.Observation; + +/** + * {@code BatteryLevelObservation} provides the battery level. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class BatteryLevelObservation implements Observation { + private ANES_URN urn; + private Battery8 battery8; + private Battery battery; + private boolean rev6; + private Logger logger; + + /** + * Public constructor for {@code BatteryLevelObservation}. + * + * @param properties The set of reconfiguration properties. + * @param urn The urn for the observation. + */ + public BatteryLevelObservation(Properties properties, String urn) { + ESpot espot = (ESpot) Resources.lookup(ESpot.class); + IPowerController powerController = espot.getPowerController(); + try { + this.battery8 = (Battery8) powerController.getBattery(); + this.rev6 = true; + } + catch (RuntimeException exception) { + this.battery = (Battery) powerController.getBattery(); + this.rev6=false; + } + + this.logger = SystemContext.getLogger(); + } + + /** + * Gets the ID of an observation. + * + * @return the ANES_URN of observation. + */ + public ANES_URN getObservationID() { + try { + return ANES_URN.create(DEMANESResources.BLObservationURN); + } catch (ANES_URN_Exception ex) { + logger.log(Level.SEVERE, "NodeDegreeObservation.getObservationID: ANES_URN.create reported and error with DEMANESResources.BLObservationURN."); + return null; + } + } + + /** + * Get the batteries remaining capacity in mAh. + * + * @return the capacity in milliampere-hour. + * @throws ObservationInvocationException + */ + public Object getValue() throws ObservationInvocationException { + if (rev6) { + return Double.valueOf(this.battery8.getAvailableCapacity()); + } else { + return Double.valueOf(this.battery.getAvailableCapacity()); + } + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservation.java b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservation.java new file mode 100644 index 0000000..38afc24 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservation.java @@ -0,0 +1,113 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations; + +import com.sun.spot.core.util.Properties; +import eu.artemis.demanes.datatypes.ANES_URN; +import eu.artemis.demanes.datatypes.ANES_URN_Exception; +import eu.artemis.demanes.exceptions.ObservationInvocationException; +import eu.artemis.demanes.impl.SunSPOT.common.DEMANESResources; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Level; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; +import eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NDPFactory; +import eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryFactoryException; +import eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryProtocol; +import eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryType; +import eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery; +import eu.artemis.demanes.reconfiguration.Observation; +import java.util.Vector; + +/** + * Node Degree Observation provides the number of active neighbors. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class NodeDegreeObservation implements Observation, NodeDegreeObservationExtension { + + private final Logger logger; + private NeighborDiscoveryProtocol nodeDegreeManager; + + /** + * Public constructor for the Node Degree Observation. + * + * @param properties The set of reconfiguration properties. + * @param urn The urn for the observation. + */ + public NodeDegreeObservation(Properties properties, String urn) { + this.logger = SystemContext.getLogger(); + try { + nodeDegreeManager = NDPFactory.getInstance(NeighborDiscoveryType.ON_DEMAND_NODE_DEGREE); + } catch (NeighborDiscoveryFactoryException ex) { + logger.severe("Unable to create the requested nodeDegreeManager"); + } + } + + /** + * Starts the on demand neighbor discovery required to keep updated the + * table of active neighbors. + */ + public void start() { + ((OnDemandNeighborDiscovery) this.nodeDegreeManager).start(); + } + + /** + * Get the observation {@link ANES_URN} urn. + * + * @return The observatio ANES urn. + */ + public ANES_URN getObservationID() { + try { + return ANES_URN.create(DEMANESResources.NDObservationURN); + } catch (ANES_URN_Exception ex) { + logger.log(Level.SEVERE, "NodeDegreeObservation.getObservationID: ANES_URN.create reported and error with DEMANESResources.NDObservationURN."); + return null; + } + } + + /** + * Get the observed value, in this case the number of active neighbors. + * + * @return The observation value, that is, the number of active neighbors. + * @throws ObservationInvocationException + */ + public Object getValue() throws ObservationInvocationException { + return new Integer((int) nodeDegreeManager.getNodeDegree()); + } + + /** + * Updates the active neighbors table. + */ + public void updateNodeDegree() { + nodeDegreeManager.doNeighborDiscovery(); + } + + /** + * Get the list of active neighbors. + * + * @return The list of active neighbors. + */ + public Vector getNeighborList() { + return nodeDegreeManager.getNeighborList(); + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservationExtension.java b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservationExtension.java new file mode 100644 index 0000000..31aea6c --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/NodeDegreeObservationExtension.java @@ -0,0 +1,40 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations; + +import java.util.Vector; + +/** + * Interface to extend the functionality of the basic NodeDegreeObservation. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public interface NodeDegreeObservationExtension { + + /** + * Retrieves the list of active neighbors. + * + * @return The list of active neighbors. + */ + public Vector getNeighborList(); +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationException.java b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationException.java new file mode 100644 index 0000000..facd50f --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationException.java @@ -0,0 +1,44 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations; + +import eu.artemis.demanes.reconfiguration.Observation; + +/** + * Thrown when the {@code Observation} catches an error. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +class ObservationException extends Exception { + + /** + * Constructs a {@code ObservationException} with the specified + * detail message. + * + * @param observation The detail message. + */ + public ObservationException(String message, Observation observation) { + super(observation.getClass().toString() + ": " + message); + } + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationFactory.java b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationFactory.java new file mode 100644 index 0000000..57866fc --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationFactory.java @@ -0,0 +1,56 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations; + +import com.sun.spot.core.util.Properties; +import eu.artemis.demanes.reconfiguration.Observation; + +/** + * An ObservationFactory is a factory method to provide an {@link Observation} + * selected accordingly to the instance requested. See{@link ObservationType} + * for further information regarding the current available observations. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class ObservationFactory { + + /** + * A factory to create instances of requested observations. + * + * @param observationType The type of observation to be created. + * @param properties Properties used by the observation. + * @param urn URN associated to the observation + * @return The observation object. + * @throws ObservationFactoryException + */ + public static Observation getInstance(ObservationType observationType, Properties properties, String urn) throws ObservationFactoryException { + switch (observationType.hashCode()) { + case ObservationType.NODE_DEGREE_OBSERVATION_CODE: + return new NodeDegreeObservation(properties, urn); + case ObservationType.BATTERY_LEVEL_OBSERVATION_CODE: + return new BatteryLevelObservation(properties, urn); + default: + throw new ObservationFactoryException(observationType.toString()); + } + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationFactoryException.java b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationFactoryException.java new file mode 100644 index 0000000..bb49728 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationFactoryException.java @@ -0,0 +1,43 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations; + +/** + * Thrown when the {@code ObservationFactory} tries to instantiate an + * observation not implemented. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +class ObservationFactoryException extends Exception { + + /** + * Constructs a {@code ObservationFactoryException} with the specified + * detail message. + * + * @param observationType The detail message. + */ + public ObservationFactoryException(String observationType) { + super("Unknown " + observationType + " requested."); + } + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationType.java b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationType.java new file mode 100644 index 0000000..23af0dc --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/reconfiguration/observations/ObservationType.java @@ -0,0 +1,130 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.reconfiguration.observations; + +/** + * Observation type for use in the {@code ObservationFactory}. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class ObservationType { + + /** Node degree observation descriptive string. */ + public static final String NODE_DEGREE_OBSERVATION_STRING = "Node Degree Observation"; + /** Battery level observation descriptive string. */ + public static final String BATTERY_LEVEL_OBSERVATION_STRING = "Battery Level Observation"; + + /** Node degree observation code. */ + public static final int NODE_DEGREE_OBSERVATION_CODE = 0xA1; + /** Battery level observation code. */ + public static final int BATTERY_LEVEL_OBSERVATION_CODE = 0xA2; + + /** Node degree observation type. */ + public static final ObservationType NODE_DEGREE_OBSERVATION = new ObservationType(NODE_DEGREE_OBSERVATION_STRING, NODE_DEGREE_OBSERVATION_CODE); + /** Battery level observation type. */ + public static final ObservationType BATTERY_LEVEL_OBSERVATION = new ObservationType(BATTERY_LEVEL_OBSERVATION_STRING, BATTERY_LEVEL_OBSERVATION_CODE); + + private String name; + private int code; + + /** + * Protected constructor of an observation with a descriptive string + * {@code name} and identificative {@code code}. + * + * @param name The descriptive string of the observation. + * @param code The identificative code of the observation. + */ + protected ObservationType(String name, int code) { + this.name = name; + this.code = code; + } + + /** + * Indicates whether some other object is "equal to" this one. + * + * @param obj The reference object with which to compare. + * @return True if this object is the same as the obj argument, false otherwise. + */ + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + + if (getClass() != obj.getClass()) { + return false; + } + + final ObservationType other = (ObservationType) obj; + if (this.code != other.code) { + return false; + } + + return true; + } + + /** + *

Returns a hash code value for the object. This method is supported + * for the benefit of hash tables such as those provided by HashMap. + *

+ * + *

The general contract of hashCode is:

+ *
    + *
  • Whenever it is invoked on the same object more than once during an + * execution of a Java application, the hashCode method must consistently + * return the same integer, provided no information used in equals + * comparisons on the object is modified. This integer need not remain + * consistent from one execution of an application to another execution of + * the same application.
  • + *
  • If two objects are equal according to the equals(Object) method, + * then calling the hashCode method on each of the two objects must produce + * the same integer result.
  • + *
  • It is not required that if two objects are unequal according to the + * equals(java.lang.Object) method, then calling the hashCode method on each + * of the two objects must produce distinct integer results. However, the + * programmer should be aware that producing distinct integer results for + * unequal objects may improve the performance of hash tables.
  • + *
+ * + *

As much as is reasonably practical, the hashCode method defined by + * class Object does return distinct integers for distinct objects. (This + * is typically implemented by converting the internal address of the object + * into an integer, but this implementation technique is not required by the + * JavaTM programming language.) + *

+ * + * @return A hash code value for this object. + */ + public int hashCode() { + return this.code; + } + + /** + * Returns a string representation of the object, in this case the + * descriptive string of the observation type. + * + * @return A string representation of the object. + */ + public String toString() { + return this.name; + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee.java new file mode 100644 index 0000000..bead780 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/Marquee.java @@ -0,0 +1,276 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee; + +import com.sun.spot.core.resources.Resources; +import com.sun.spot.core.resources.transducers.ITriColorLEDArray; +import com.sun.spot.core.resources.transducers.LEDColor; +import com.sun.spot.core.util.Utils; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import java.util.Enumeration; +import java.util.Hashtable; + +/** + * + * Note: Although some parts should be considered to be accessed in a + * synchronized way allowing different callers for the marquee, the actual usage + * does not require it. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class Marquee { + + /** Color used for signaling a "NOT READY" message. */ + public static final LEDColor STATUS_IS_NOT_READY = LEDColor.RED; + /** Color used for signaling a "READY" message. */ + public static final LEDColor STATUS_IS_READY = LEDColor.GREEN; + /** Color used for signaling a "STANDBY" message. */ + public static final LEDColor STATUS_IS_STANDBY = LEDColor.YELLOW; + + /** Minimum interval time in milliseconds for rotating the messages. */ + public static final long MINIMUM_INTERVAL = 3000; + /** Blink interval time in milliseconds. */ + public static final long BLINK_INTERVAL = 200; + + private static final int STATUS_INDICATOR_LED_POSITION = 0; + private static final int ACTIVITY_1_LED_POSITION = 1; + private static final int ACTIVITY_2_LED_POSITION = 2; + + private Hashtable messages; + private long updatingInterval; + private boolean useStatusIndicator; + private LEDColor statusIndicator; + private int messageIdCounter; + private boolean running; + private boolean paused; + + private ITriColorLEDArray LEDs; + + private Thread engineThread; + + private SystemContext context; + + /** + * Public constructor for a new marquee. The created marquee will have no + * message and will be stopped until {@link eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee.Marquee#start()} + * is called. + */ + public Marquee() { + this.messages = new Hashtable(); + this.updatingInterval = MINIMUM_INTERVAL; + this.useStatusIndicator = true; + this.statusIndicator = STATUS_IS_NOT_READY; + this.messageIdCounter = 0; + this.running = false; + this.paused = false; + + this.LEDs = (ITriColorLEDArray) Resources.lookup(ITriColorLEDArray.class); + } + + /** + * Get the updating interval time being used in the marquee. + * + * @return The updating interval time. + */ + public long getUpdatingInterval() { + return updatingInterval; + } + + /** + * Set the updating interval time to be used in the marquee. + * + * @param updatingInterval The updating interval time. + */ + public void setUpdatingInterval(long updatingInterval) { + this.updatingInterval = updatingInterval; + } + + /** + * Activates the status indicator. + */ + public void activateStatusIndicator() { + this.useStatusIndicator = true; + } + + /** + * Deactivates the status indicator. + */ + public void deactivateStatusIndicator() { + this.useStatusIndicator = false; + } + + /** + * Add a {@code message} to the marquee. + * + * @param message The message. + * @return The ID of the message for further references. + * @throws MarqueeAddMessageException When the message can not be added to + * the marquee. + */ + public Object addMessage(MarqueeMessage message) throws MarqueeAddMessageException { + if (messageIdCounter == Integer.MAX_VALUE) { + throw new MarqueeAddMessageException("Reached maximum number of messages available."); + } + + messageIdCounter++; + Integer key = Integer.valueOf(messageIdCounter); + messages.put(key, message); + + return (Object) key; + } + + /** + * Update a message referenced by {@code key} reference ID with the new + * {@code message}. + * + * @param key The reference key ID. + * @param message The new message. + */ + public void updateMessage(Object key, MarqueeMessage message) { + messages.put(key, message); + } + + /** + * Remeve a message referenced by {@code key} refernce ID from the marquee. + * + * @param key The reference key ID. + */ + public void removeMessage(Object key) { + messages.remove(key); + } + + /** + * Clears de marquee. + */ + public void clearMarquee() { + messages.clear(); + LEDs.setRGB(0, 0, 0); + } + + /** + * Starts the marquee. + */ + public void start() { + if (!this.running) { + this.running = true; + this.paused = false; + this.LEDs.setOn(); + this.engineThread = new Thread(new Engine()); + this.engineThread.start(); + } + } + + /** + * Pauses the marquee. + */ + public void pause() { + paused = true; + } + + /** + * Unpauses the marquee. + */ + public void unpause() { + paused = false; + } + + /** + * Stops the marquee. + */ + public void stop() { + if (this.running) { + this.paused = true; + this.running = false; + } + try { + this.engineThread.join(); + this.LEDs.setOff(); + } catch (InterruptedException ex) { + ex.printStackTrace(); + } + } + + /** + * Sets the color of the status indicator according to {@code status}. + * + * @param status The new status color for the status indicator. + */ + public void setStatusIndicator(LEDColor status) { + this.statusIndicator = status; + } + + /** + * Blinks the first activity LED indicator using the {@code activityColor} + * color. + * + * @param activityColor The color for the blink. + */ + public void blinkActivity1(LEDColor activityColor) { + LEDs.getLED(ACTIVITY_1_LED_POSITION).setColor(activityColor); + try{Thread.sleep(BLINK_INTERVAL);} catch(InterruptedException ie){} + LEDs.getLED(ACTIVITY_1_LED_POSITION).setRGB(0, 0, 0); + } + + /** + * Blinks the second activity LED indicator using the {@code activityColor} + * color. + * + * @param activityColor The color for the blink. + */ + public void blinkActivity2(LEDColor activityColor) { + LEDs.getLED(ACTIVITY_2_LED_POSITION).setColor(activityColor); + try{Thread.sleep(BLINK_INTERVAL);} catch(InterruptedException ie){} + LEDs.getLED(ACTIVITY_2_LED_POSITION).setRGB(0, 0, 0); + } + + private class Engine implements Runnable { + + public void run() { + MarqueeMessage message; + + LEDs.setOn(); + + while (running) { + while (!paused) { + try { + LEDs.getLED(STATUS_INDICATOR_LED_POSITION).setColor(statusIndicator); + + if (!messages.isEmpty()) { + Enumeration messageList = messages.keys(); + while (messageList.hasMoreElements()) { + message = (MarqueeMessage) messages.get(messageList.nextElement()); + for (int index = 0; index < MarqueeMessage.MESSAGE_LENGTH; index++) { + LEDs.getLED(index + 3).setColor(message.getMessage()[index]); + } + Utils.sleep(updatingInterval); + } + } + } catch (Exception e) { + e.printStackTrace(); + Utils.sleep(Long.MAX_VALUE); + } + } + } + } + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeAddMessageException.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeAddMessageException.java new file mode 100644 index 0000000..212cf36 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeAddMessageException.java @@ -0,0 +1,49 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee; + +/** + * Thrown when an error occurs trying to add a new message to the marquee. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class MarqueeAddMessageException extends Exception { + + /** + * Constructs a {@code MarqueeAddMessageException}. + */ + public MarqueeAddMessageException() { + super("Exception trying to add a message to the marquee."); + } + + /** + * Constructs a {@code MarqueeAddMessageException} with the specified + * detail message. + * + * @param s The detail message. + */ + public MarqueeAddMessageException(String s) { + super("Exception trying to add a message to the marquee: " + s); + } + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeMessage.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeMessage.java new file mode 100644 index 0000000..35f3d7a --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/LEDMarquee/MarqueeMessage.java @@ -0,0 +1,88 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.LEDMarquee; + +import com.sun.spot.core.resources.transducers.LEDColor; + +/** + * A Marquee Message. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class MarqueeMessage { + /** Message length */ + public static final int MESSAGE_LENGTH = 5; + + private static final byte STATIC = 0x01; + private static final byte PROGRESS_BAR = 0x02; + + private LEDColor[] message; + private byte messageType; + + /** + * Public constructor of the LED marquee using a default blank message. + */ + public MarqueeMessage() { + this.message = new LEDColor[MESSAGE_LENGTH]; + for (int index=0; index < MESSAGE_LENGTH; index++) + this.message[index] = new LEDColor(0,0,0); + } + + /** + * Public constructor of the LED marquee with a {@code message}. + * + * @param message The initial message. + */ + public MarqueeMessage(LEDColor[] message) { + this.message = message; + } + + /** + * Get the message shown in the marquee. + * + * @return The message. + */ + public LEDColor[] getMessage() { + return message; + } + + /** + * Set the message to be shown in the marquee. + * + * @param message The message. + */ + public void setMessage(LEDColor[] message) { + this.message = message; + } + + /** + * Set a new indicator @code color} at postition {@code position} of the + * message. + * + * @param position The position. + * @param color The color. + */ + public void setMessageAtPosition(int position, LEDColor color) { + this.message[position] = color; + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.java new file mode 100644 index 0000000..7959c52 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/logging/Level.java @@ -0,0 +1,179 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.logging; + +/** + * The Level class defines a set of standard logging levels that can be used to + * control logging output. The logging Level objects are ordered and are + * specified by ordered integers. Enabling logging at a given level also enables + * logging at all higher levels. + * + *

+ * Clients should normally use the predefined Level constants such as + * Level.SEVERE. + *

+ * + *

+ * The levels in descending order are: + *

+ * + *
    + *
  • SEVERE (highest value)
  • + *
  • WARNING
  • + *
  • INFO
  • + *
  • CONFIG
  • + *
  • FINE
  • + *
  • FINER
  • + *
  • FINEST (lowest value)
  • + *
+ * + *

+ * In addition there is a level OFF that can be used to turn off logging, and a + * level ALL that can be used to enable logging of all messages. + *

+ * + *

+ * It is possible for third parties to define additional logging levels by + * subclassing Level. In such cases subclasses should take care to chose unique + * integer level values and to ensure that they maintain the Object uniqueness + * property across serialization by defining a suitable readResolve method. + *

+ * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class Level { + + private final String name; + private final int value; + + /** + * ALL indicates that all messages should be logged. + */ + public static Level ALL = new Level("ALL", 0); + /** + * FINEST indicates a highly detailed tracing message. + */ + public static Level FINEST = new Level("FINEST", 1); + /** + * FINER indicates a fairly detailed tracing message. + */ + public static Level FINER = new Level("FINER", 2); + /** + * FINE is a message level providing tracing information. + */ + public static Level FINE = new Level("FINE", 3); + /** + * DEBUG is a message level for debugging information. + */ + public static Level DEBUG = new Level("DEBUG", 4); + /** + * CONFIG is a message level for static configuration messages. + */ + public static Level CONFIG = new Level("CONFIG", 5); + /** + * INFO is a message level for informational messages. + */ + public static Level INFO = new Level("INFO", 6); + /** + * WARNING is a message level indicating a potential problem. + */ + public static Level WARNING = new Level("WARNING", 7); + /** + * SEVERE is a message level indicating a serious failure. + */ + public static Level SEVERE = new Level("SEVERE", 8); + /** + * OFF is a special level that can be used to turn off logging. + */ + public static Level OFF = new Level("OFF", Integer.MAX_VALUE); + + /** + * Create a named Level with a given integer value. + * + * Note that this constructor is "protected" to allow subclassing. In + * general clients of logging should use one of the constant Level objects + * such as SEVERE or FINEST. However, if clients need to add new logging + * levels, they may subclass Level and define new constants. + * + * @param name the name of the Level, for example "SEVERE". + * @param value an integer value for the level. + */ + protected Level(String name, int value) { + this.name = name; + this.value = value; + } + + /** + * Generate a hashcode. + * + * @return a hashcode based on the level value. + */ + public int hashCode() { + int hash = 5; + hash = 41 * hash + (this.name != null ? this.name.hashCode() : 0); + hash = 41 * hash + this.value; + return hash; + } + + /** + * Compare two objects for value equality. + * + * @param ox the reference object with which to compare. + * @return true if and only if the two objects have the same level value. + */ + public boolean equals(Object ox) { + if (this.getClass().equals(ox.getClass())) { + return ((Level) ox).getName().equalsIgnoreCase(this.name) && ((Level) ox).intValue() == this.value; + } else { + return false; + } + } + + /** + * Return the non-localized string name of the Level. + * + * @return non-localized name + */ + public String getName() { + return this.name; + } + + /** + * Get the integer value for this level. This integer value can be used for + * efficient ordering comparisons between Level objects. + * + * @return the integer value for this level. + */ + public int intValue() { + return this.value; + } + + /** + * Returns a string representation of this Level. + * + * @return the non-localized name of the Level, for example "INFO". + */ + public String toString() { + return this.name; + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.java new file mode 100644 index 0000000..db89a6f --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/logging/Logger.java @@ -0,0 +1,402 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.logging; + +import com.sun.spot.core.util.PrettyPrint; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import java.io.ByteArrayOutputStream; +import java.io.UnsupportedEncodingException; +import java.util.Calendar; +import java.util.Date; +import java.util.TimeZone; +import javax.microedition.rms.RecordStore; +import javax.microedition.rms.RecordStoreException; +import javax.microedition.rms.RecordStoreFullException; + +/** + * Logging operations are done through this class. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class Logger { + + /** + * SYSTEM_OUTPUT indicates that the log is going to be done to System.out. + */ + public static final byte SYSTEM_OUTPUT = 0x01; + /** + * SYSTEM_ERROR indicates that the log is going to be done to System.err. + */ + public static final byte SYSTEM_ERROR = 0x02; + /** + * RECORD indicates that the log is going to be stored in an internal + * RecordStore. + */ + public static final byte RECORD = 0x10; + /** + * DISABLED indicates that the loggin is disabled. + */ + public static final byte DISABLED = 0x00; + /** + * REMOTE indicates that the log is going to be casted to a remote logging + * facility. + */ + public static final byte REMOTE = 0x20; + + private static final Level DEFAULT_LEVEL = Level.ALL; + private static final byte DEFAULT_DESTINATION = SYSTEM_OUTPUT; + private static final String DEFAULT_RECORD_NAME = "spotlog"; + private static final String DEFAULT_DEBUG_RECORD_NAME = "debuglog"; + + private static final String DELIMITER = ": "; + private static final boolean CREATE_RECORD_IF_NECESSARY = true; + + private byte destination; + private String name; + private Level level; + + private TimeZone timeZone; + + private int numberOfRecords; + + private SystemContext context; + + /** + * Public constructor with a default configuration. + * + * The logger will be initially configured for ALL messages done to + * System.out. + */ + public Logger() { + this.destination = DEFAULT_DESTINATION; + this.name = DEFAULT_RECORD_NAME; + this.level = DEFAULT_LEVEL; + this.timeZone = TimeZone.getTimeZone("GMT+1"); + this.numberOfRecords = 0; + } + + /** + * Public constructor with default configuration using {@code name} as the + * name for the internal record storage. + * + * The logger will be initially configured for ALL messages done to + * System.out. + * + * @param name The name of the record store. + */ + public Logger(String name) { + this(); + this.name = name; + } + + /** + * Public constructor with default configuration using {@code destination} + * as the destination for the logs. + * + * @param destination The destination for the logs. + */ + public Logger(byte destination) { + this(); + this.destination = destination; + } + + /** + * Public constructor with default configuration using {@code name} as the + * name for the record store, and {@code destination} for the destination of + * the logs. + * + * @param name The name of the record store. + * @param destination The destination for the logs. + */ + public Logger(String name, byte destination) { + this(); + this.destination = destination; + this.name = name; + } + + /** + * Public constructor with default configuration using {@code name} as the + * name for the record store, {@code destination} as the destination for the + * logs, and {@code level} as the minimum level of the logs to be recorded. + * + * @param name The name of the record store. + * @param destination The destination for the logs. + * @param level The minimum level of the logs to be recorded. + */ + public Logger(String name, byte destination, Level level) { + this(); + this.destination = destination; + this.name = name; + this.level = level; + } + + /** + * Set the name of the record store. + * + * @param name The name of the record store. + */ + public void setName(String name) { + this.name = name; + } + + /** + * Get the name of the record store. + * + * @return The name of the record store. + */ + public String getName() { + return this.name; + } + + /** + * Set the destination of the log messages. + * + * @param destination The destination of the log messages. + */ + public void setDestination(byte destination) { + this.destination = destination; + } + + /** + * Get the destination of the log messages. + * + * @return The detination of the log messages. + */ + public byte getDestination() { + return this.destination; + } + + /** + * Set the logging level. + * + * @param level The logging level. + */ + public void setLevel(Level level) { + this.level = level; + } + + /** + * Get the logging level. + * + * @return The logging level. + */ + public Level getLevel() { + return this.level; + } + + /** + * Set the level to logging all. + */ + public void setAll() { + this.level = Level.ALL; + } + + /** + * Set off the logging. + */ + public void setOff() { + this.level = Level.OFF; + } + + /** + * Log a message of level {@code FINEST}. + * + * @param msg The message. + */ + public void finest(String msg) { + this.log(Level.FINEST, msg); + } + + /** + * Log a message of level {@code FINER}. + * + * @param msg The message. + */ + public void finer(String msg) { + this.log(Level.FINER, msg); + } + + /** + * Log a message of level {@code FINE}. + * + * @param msg The message. + */ + public void fine(String msg) { + this.log(Level.FINE, msg); + } + + /** + * Log a message of level {@code DEBUG}. + * + * @param msg The message. + */ + public void debug(String msg) { + this.log(Level.DEBUG, msg); + } + + /** + * Log a message of level {@code CONFIG}. + * + * @param msg The message. + */ + public void config(String msg) { + this.log(Level.CONFIG, msg); + } + + /** + * Log a message of level {@code INFO}. + * + * @param msg The message. + */ + public void info(String msg) { + this.log(Level.INFO, msg); + } + + /** + * Log a message of level {@code WARNING}. + * + * @param msg The message. + */ + public void warning(String msg) { + this.log(Level.WARNING, msg); + } + + /** + * Log a message of level {@code SEVERE}. + * + * @param msg The message. + */ + public void severe(String msg) { + this.log(Level.SEVERE, msg); + } + + /** + * Log a message of level {@code level}. + * + * @param level The level. + * @param msg The message. + */ + public void log(Level level, String msg) { + + if (level.intValue() >= this.level.intValue()) { + Date timestamp = Calendar.getInstance().getTime(); + StringBuffer logBuffer = new StringBuffer(); + logBuffer.append(timestamp.toString()); + logBuffer.append(DELIMITER); + logBuffer.append(level.getName()); + logBuffer.append(DELIMITER); + logBuffer.append(msg); + + String logMessage = logBuffer.toString(); + switch (this.destination) { + case SYSTEM_OUTPUT: + System.out.println(logMessage); + break; + case SYSTEM_ERROR: + System.err.println(logMessage); + break; + case RECORD: + RecordStore recordStore; + try { + recordStore = RecordStore.openRecordStore(name, CREATE_RECORD_IF_NECESSARY); + System.out.println("Trying to record a message with size " + logMessage.length()); + recordStore.addRecord(logMessage.getBytes(), 0, logMessage.length()); + numberOfRecords++; + System.out.println("Updated number of records is " + numberOfRecords); + recordStore.closeRecordStore(); + } catch (RecordStoreFullException exception) { + System.err.println("WARNING. Record store is full"); + } catch (RecordStoreException ex) { + if (this.level.intValue() <= Level.DEBUG.intValue()) { + System.out.println("An error has ocurred trying to store a log in the record store named \"" + name + "\""); + ex.printStackTrace(); + } else { + System.out.println("You shoulden't be reading this... contact with yourself and try to solve this mesh!!!"); + } + } + break; + case REMOTE: + // Not implemented + break; + case DISABLED: + // Do nothing + break; + default: + System.out.println(logMessage); + break; + } + } + } + + /** + * Log a byte array of level {@code level}. + * + * @param level The level. + * @param baos The byte array message. + */ + public void log(Level level, ByteArrayOutputStream baos) { + + if (level.intValue() >= this.level.intValue()) { + Date timestamp = Calendar.getInstance().getTime(); + + switch (this.destination) { + case SYSTEM_OUTPUT: + PrettyPrint.prettyPrint(baos.toByteArray()); + break; + case SYSTEM_ERROR: + PrettyPrint.prettyPrint(baos.toByteArray()); + break; + case RECORD: + RecordStore recordStore; + try { + recordStore = RecordStore.openRecordStore(name, CREATE_RECORD_IF_NECESSARY); + System.out.println("Trying to record a message with size " + baos.size()); + recordStore.addRecord(baos.toByteArray(), 0, baos.size()); + numberOfRecords++; + System.out.println("Updated number of records is " + numberOfRecords); + recordStore.closeRecordStore(); + } catch (RecordStoreFullException exception) { + System.err.println("WARNING. Record store is full"); + } catch (RecordStoreException ex) { + if (this.level.intValue() <= Level.DEBUG.intValue()) { + System.out.println("An error has ocurred trying to store a log in the record store named \"" + name + "\""); + ex.printStackTrace(); + } else { + System.out.println("You shoulden't be reading this... contact with yourself and try to solve this mesh!!!"); + } + } + break; + case REMOTE: + // Not implemented + break; + case DISABLED: + // Do nothing + break; + default: + System.out.println("DESTINATION NOT IMPLEMENTED. DEFAULT TO STDOUT"); + PrettyPrint.prettyPrint(baos.toByteArray()); + break; + } + } + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NDPFactory.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NDPFactory.java new file mode 100644 index 0000000..519ce88 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NDPFactory.java @@ -0,0 +1,56 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery; + +import eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand.OnDemandNeighborDiscovery; + +/** + *

A NDPFactory is a factory method to provide a Neighbor Discovery Protocol + * manager selected accordingly to the instance requested. See + * {@link NeighborDiscoveryType} for further information regarding the current + * available managers. + *

+ * + * @author Néstor Lucas Martínez + * @version 1.0.0 + * @since 20140923 + * + */ +public class NDPFactory { + /** + * A factory to create instances of requested neighbor discovery protocols. + * + * @param neighborDiscoveryType The type of neighbor discovery required. + * @return The instantiated neighbor discovery protocol. + * @throws NeighborDiscoveryFactoryException when the requested typr is not implemented. + */ + public static NeighborDiscoveryProtocol getInstance(NeighborDiscoveryType neighborDiscoveryType) throws NeighborDiscoveryFactoryException { + switch (neighborDiscoveryType.hashCode()) { + case NeighborDiscoveryType.NODE_DEGREE_MANAGER_V1_CODE: + return new NodeDegreeManagerV1(); + case NeighborDiscoveryType.ON_DEMAND_NODE_DEGREE_CODE: + return new OnDemandNeighborDiscovery(); + default: + throw new NeighborDiscoveryFactoryException(neighborDiscoveryType.toString()); + } + } +} \ No newline at end of file diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryException.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryException.java new file mode 100644 index 0000000..4b63dec --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryException.java @@ -0,0 +1,42 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery; + +/** + * Thrown when an error occurs in the neighbor discovery protocol. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class NeighborDiscoveryException extends Exception { + + /** + * Constructs a {@code NeighborDiscoveryException} with the specified + * detail message. + * + * @param s The detail message. + */ + public NeighborDiscoveryException(String s) { + super(s); + } + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryFactoryException.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryFactoryException.java new file mode 100644 index 0000000..d673315 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryFactoryException.java @@ -0,0 +1,43 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery; + +/** + * Thrown when the neighbor discovery protocol factory is requested to create + * an instance of an non implemented neighbor discovery protocol. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class NeighborDiscoveryFactoryException extends Exception { + + /** + * Constructs a {@code NeighborDiscoveryFactoryException} with the specified + * detail message. + * + * @param neighborDiscoveryType The detail message. + */ + public NeighborDiscoveryFactoryException(String neighborDiscoveryType) { + super("Unknown " + neighborDiscoveryType + " requested."); + } + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryProtocol.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryProtocol.java new file mode 100644 index 0000000..a229b06 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryProtocol.java @@ -0,0 +1,52 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery; + +import java.util.Vector; + +/** + * Defines the public methods for any neighbor discovery protocol used in the + * slef-adaptive power controller. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public interface NeighborDiscoveryProtocol { + /** + * Gets the number of active neighbors (Node Degree). + * + * @return The number of active neighbors. + */ + public long getNodeDegree(); + + /** + * Gets the list of active neighbors. + * + * @return The list of active neighbors. + */ + public Vector getNeighborList(); + + /** + * Performs a neighbor discovery request. + */ + public void doNeighborDiscovery(); +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryType.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryType.java new file mode 100644 index 0000000..a2ac5ac --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NeighborDiscoveryType.java @@ -0,0 +1,113 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery; + +/** + * Represents the type of neighbor discovery protocol. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class NeighborDiscoveryType { + + /** String description for the Node Degree Manager V1. */ + public static final String NODE_DEGREE_MANAGER_V1_STRING = "Node Degree Manager V1 (Guard Interval)"; + /** String description for the Node Degree Manager V2. */ + public static final String NODE_DEGREE_MANAGER_V2_STRING = "Node Degree Manager V2 (Incremental Management)"; + /** String description for the outdated Basic Neighbor Discovery. */ + public static final String BASIC_NEIGHBOR_DISCOVERY_STRING = "Basic Neighbor Discovery Manager V1"; + /** String description for the On Demand Node Degree. */ + public static final String ON_DEMAND_NODE_DEGREE_STRING = "On Demand Node Degree Manager V1"; + + /** Code for the Node Degree Manager V1. */ + public static final int NODE_DEGREE_MANAGER_V1_CODE = 0x01; + /** Code for the Node Degree Manager V2. */ + public static final int NODE_DEGREE_MANAGER_V2_CODE = 0x02; + /** Code for the outdated Basic Neighbor Discovery. */ + public static final int BASIC_NEIGHBOR_DISCOVERY_CODE = 0x03; + /** Code for the On Demand Node Degree. */ + public static final int ON_DEMAND_NODE_DEGREE_CODE = 0x04; + + /** Neighbor Discovery Type for the Node Degree Manager V1. */ + public static final NeighborDiscoveryType NODE_DEGREE_MANAGER_V1 = new NeighborDiscoveryType(NODE_DEGREE_MANAGER_V1_STRING, NODE_DEGREE_MANAGER_V1_CODE); + /** Neighbor Discovery Type for the Node Degree Manager Vw. */ + public static final NeighborDiscoveryType NODE_DEGREE_MANAGER_V2 = new NeighborDiscoveryType(NODE_DEGREE_MANAGER_V2_STRING, NODE_DEGREE_MANAGER_V2_CODE); + /** Neighbor Discovery Type for the outdated Basic Neighbor Discovery. */ + public static final NeighborDiscoveryType BASIC_NEIGHBOR_DISCOVERY = new NeighborDiscoveryType(BASIC_NEIGHBOR_DISCOVERY_STRING, BASIC_NEIGHBOR_DISCOVERY_CODE); + /** Neighbor Discovery Type for the On Demand Node Degree. */ + public static final NeighborDiscoveryType ON_DEMAND_NODE_DEGREE = new NeighborDiscoveryType(ON_DEMAND_NODE_DEGREE_STRING, ON_DEMAND_NODE_DEGREE_CODE); + + private final String name; + private int code; + + /** + * Creates a new Neighbor Discovery Type. + * + * @param name Name descriptor for the Neighbor Discovery Type. + * @param code Unique code number used to identify the Neighbor Discovery Type. + */ + protected NeighborDiscoveryType(String name, int code) { + this.name = name; + this.code = code; + } + + /** + * Indicates whether some other object is "equal to" this one. + * + * @param obj The reference object with which to compare. + * @return True if this object is the same as the obj argument, false otherwise. + */ + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + + if (getClass() != obj.getClass()) { + return false; + } + + final NeighborDiscoveryType other = (NeighborDiscoveryType) obj; + if (this.code != other.code) { + return false; + } + + return true; + } + + /** + * Returns a hash code value for the object. + * + * @return A hash code value for this object. + */ + public int hashCode() { + return this.code; + } + + /** + * Returns a string representation of the object. + * + * @return A string representation of the object. + */ + public String toString() { + return this.name; + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1.java new file mode 100644 index 0000000..b374299 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV1.java @@ -0,0 +1,348 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery; + +import com.sun.spot.multihop.io.j2me.radiogram.RadiogramConnection; +import com.sun.squawk.util.NotImplementedYetException; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Level; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; +import java.io.IOException; +import java.util.Hashtable; +import java.util.Random; +import java.util.Vector; +import javax.microedition.io.Connector; +import javax.microedition.io.Datagram; + +/** + * + * @author Vicente Hern´ndez Díaz + * @version 1.0.0 + * + * Modified by Néstor Lucas Martínez for communication + * pervasiveness. + */ +public class NodeDegreeManagerV1 implements NeighborDiscoveryProtocol { + + public Vector getNeighborList() { + Vector sources = this.neighboursInfo.sources; + + return sources; + } + + public void doNeighborDiscovery() { + throw new NotImplementedYetException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + public void setContext(SystemContext context) { + //throw new java.lang.UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + private class NeighborsDiscoveryMgr implements Runnable { + + /** + * Message of type Neighbor Discovery Request. + */ + private final byte ND_REQUEST = 0; + /** + * Message of type Neighbor Discovery Response. + */ + private final byte ND_RESPONSE = 1; + /** + * Message of type Neighbor Discovery Response Acknowledge. + */ + private final byte ND_RESPONSE_ACK = 2; + + /** + * Port used for this particular Neighbor Discovery Protocol. + */ + private final int NEIGHBORS_DISCOVERY_PORT = 200; + + /** + * Information regarding the Node Degree (the number of available + * neighbors at any given moment). + */ + private final NDInformation nodeDegreeInformation; + + /** + * Random number generator. + */ + private final Random randomGenerator; + + public NeighborsDiscoveryMgr(NDInformation nodeDegreeInformation) { + this.nodeDegreeInformation = nodeDegreeInformation; + randomGenerator = new Random(); + logger.log(Level.DEBUG, "NeighboursDiscoveryManager: A new NeighboursDiscoveryMgr instantiated."); + new Thread(this).start(); + } + + public void requestForNeighbors() { + try { + long requestID; + do { + requestID = randomGenerator.nextLong(); + } while (requestID < 0); + + nodeDegreeInformation.changeReqID(requestID); + RadiogramConnection con = (RadiogramConnection) Connector.open("radiogram://broadcast:" + NEIGHBORS_DISCOVERY_PORT); + con.setMaxBroadcastHops(1); + Datagram datagram = con.newDatagram(con.getMaximumLength()); + datagram.writeByte(ND_REQUEST); + datagram.writeLong(requestID); + con.send(datagram); + logger.log(Level.DEBUG, "NeighboursDiscoveryManager.requestForNeighbours: Requesting neighbours reponses."); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + private synchronized void sendMessage(String to, int type, long reqID) { + RadiogramConnection connection = null; + + try { + + if (connection == null) { + connection = (RadiogramConnection) Connector.open("radiogram://" + to + ":" + NEIGHBORS_DISCOVERY_PORT); + } + + Datagram datagram = connection.newDatagram(connection.getMaximumLength()); + datagram.writeByte(type); + datagram.writeLong(reqID); + connection.send(datagram); + connection.close(); + logger.log(Level.DEBUG, "NeighborDiscoveryManager.sendMessage: A message (" + ((type == this.ND_RESPONSE) ? "RESPONSE" : ((type == this.ND_RESPONSE_ACK) ? "RESPONSE_ACK" : "UNKNOWN")) + ") sent to: " + to + " with reqID " + reqID + "."); + } catch (IOException ex) { + logger.log(Level.DEBUG, "NeighborDiscoveryManager.sendMessage: Exception trying to send a message (" + ((type == this.ND_RESPONSE) ? "RESPONSE" : ((type == this.ND_RESPONSE_ACK) ? "RESPONSE_ACK" : "UNKNOWN")) + ") to: " + to + " with reqID " + reqID + "."); + ex.printStackTrace(); + } finally { + if (connection != null) { + try { + connection.close(); + } catch (IOException ex) { + logger.log(Level.DEBUG, "NeighborDiscoveryManager.sendMessage: ERROR trying to close the connection"); + } + } + } + } + + public void run() { + Hashtable requests = new Hashtable(); + RadiogramConnection connection = null; + + boolean exit = false; + + do { + try { + if (connection == null) { + connection = (RadiogramConnection) Connector.open("radiogram://:" + this.NEIGHBORS_DISCOVERY_PORT); + connection.setTimeout(-1); + } + Datagram datagram = connection.newDatagram(connection.getMaximumLength()); + logger.log(Level.DEBUG, "NeighboursDiscoveryManager.run: Waiting for messages from neighbours."); + + connection.receive(datagram); + byte op = datagram.readByte(); + long reqID = datagram.readLong(); + logger.log(Level.DEBUG, "NeighboursDiscoveryManager.run: Message from neighbours: From: " + datagram.getAddress() + ", Op: " + op + ", ReqID: " + reqID); + switch (op) { + case ND_REQUEST: + logger.log(Level.DEBUG, "NeighboursDiscoveryManager.run: A neighbour request received: " + datagram.getAddress() + ", " + reqID + "."); + requests.put(datagram.getAddress(), new Long(reqID)); + sendMessage(datagram.getAddress(), this.ND_RESPONSE, reqID); + break; + case ND_RESPONSE: + logger.log(Level.DEBUG, "NeighboursDiscoveryManager.run: A neighbour response received: " + datagram.getAddress() + ", " + reqID + "."); + nodeDegreeInformation.addNeighbour(datagram.getAddress(), reqID); + sendMessage(datagram.getAddress(), this.ND_RESPONSE_ACK, reqID); + break; + case ND_RESPONSE_ACK: + logger.log(Level.DEBUG, "NeighboursDiscoveryManager.run: A neighbour response ack received: " + datagram.getAddress() + ", " + reqID + "."); + Object aux = requests.get(datagram.getAddress()); + if (aux != null) { + long valor = ((Long) aux).longValue(); + if (valor == reqID) { + nodeDegreeInformation.addNeighbour(datagram.getAddress()); + } + } else { + logger.log(Level.DEBUG, "NeighboursDiscoveryManager.run: A neighbour response ack received but there is no previous request."); + } + break; + } + } catch (IOException exception) { + logger.log(Level.WARNING, "NeighboursDiscoveryManager.run: Exception. Activate DEBUG Level for printing the stack trace."); + if (logger.getLevel().equals(Level.DEBUG)) { + exception.printStackTrace(); + } + } + } while (!exit); + } + } + + private class NDInformation { + + private long requestID; + private long nodeDegreeOld; + private boolean flag; + private long nodeDegree; + private final Vector sources; + private final Object lock; + + public NDInformation() { + flag = false; + nodeDegreeOld = 0; + requestID = -1; + nodeDegree = 0; + sources = new Vector(); + lock = new Object(); + logger.log(Level.DEBUG, "NDInformation: A new NDInformation object instantiated."); + } + + public void addNeighbour(String who, long reqID) { + synchronized (lock) { + if (requestID == -1) { + logger.log(Level.DEBUG, "NDInformation.addNeighbour: Response from " + who + " rejected as no previous request was sent."); + return; + } + + if (requestID != reqID) { + logger.log(Level.DEBUG, "NDInformation.addNeighbour: Response from " + who + " rejected reqIDs don't match."); + return; + } + + this.addNeighbour(who); +// if (!sources.contains(who)) { +// nodeDegree++; +// sources.addElement(who); +// logger.log(Level.DEBUG, "NDInformation.addNeighbour: New neighbour (" + who + ") added. There are " + nodeDegree + " neighbours."); +// } else { +// logger.log(Level.DEBUG, "NDInformation.addNeighbour: " + who + " has sent more than one response."); +// } + } + } + + public void addNeighbour(String who) { + synchronized (lock) { + if (!sources.contains(who)) { + nodeDegree++; + // -- BEGIN clean this up later + // if property.log.level <= FINE *** CHANGE LOG LEVELS POLICY + long nd = flag ? nodeDegreeOld : nodeDegree; + logger.setDestination(Logger.RECORD); + logger.debug("Adding " + who + " to neighbour list."); + logger.setDestination(Logger.SYSTEM_OUTPUT); + + // -- END clean this up later + sources.addElement(who); + logger.log(Level.DEBUG, "NDInformation.addNeighbour: Request from (" + who + ") accepted. There are " + nodeDegree + " neighbours."); + } else { + logger.log(Level.DEBUG, "NDInformation.addNeighbour: " + who + " has sent more than one response."); + } + } + } + + public long getNodeDegree() { + synchronized (lock) { + long res; + if (flag) { + res = this.nodeDegreeOld; + } else { + res = this.nodeDegree; + } + logger.log(Level.DEBUG, "NDInforamtion.getNodeDegree: Number of neighbours: " + res + "."); + return res; + } + } + + public void changeReqID(long reqID) { + synchronized (lock) { + nodeDegreeOld = nodeDegree; + new Thread( + new Runnable() { + public void run() { + flag = true; + try { + Thread.sleep(200); + } catch (InterruptedException ex) { + } + flag = false; + } + } + ) { + }.start(); + if (reqID >= 0) { + requestID = reqID; + nodeDegree = 0; + sources.removeAllElements(); + logger.log(Level.DEBUG, "NDInformation.changeReqID: New request with ID " + reqID + " registered."); + } else { + logger.log(Level.DEBUG, "NDInformation.changeReqID: New request with ID " + reqID + " rejected."); + } + } + } + } + + private class NDTimer implements Runnable { + + private final long REQUEST_PERIOD = 5000; + + private final NeighborsDiscoveryMgr neighboursDiscoveryMgr; + + public NDTimer(NeighborsDiscoveryMgr neighboursDiscoveryMgr) { + if (neighboursDiscoveryMgr == null) { + logger.log(Level.DEBUG, "NDTimer: no manager for discovering neighbours has been provided."); + throw new IllegalArgumentException("NDTimer: no manager for discovering neighbours has been provided."); + } + this.neighboursDiscoveryMgr = neighboursDiscoveryMgr; + logger.log(Level.DEBUG, "NDTimer: a new timer for updating the node degree has been started."); + } + + public void run() { + boolean exit = false; + logger.log(Level.DEBUG, "NDTimer: Timer started."); + do { + this.neighboursDiscoveryMgr.requestForNeighbors(); + logger.log(Level.DEBUG, "NDTimer: a new request for neighbours has been invoked."); + try { + Thread.sleep(REQUEST_PERIOD); + } catch (InterruptedException ex) { + exit = true; + } + } while (!exit); + logger.log(Level.DEBUG, "NDTimer: the timer for updating the node degree is stopped."); + } + } + + private final Logger logger = new Logger(); + private final NDInformation neighboursInfo; + + public NodeDegreeManagerV1() { + neighboursInfo = new NDInformation(); + NeighborsDiscoveryMgr discoveryMgr = new NeighborsDiscoveryMgr(neighboursInfo); + new Thread(new NDTimer(discoveryMgr)).start(); + + } + + public long getNodeDegree() { + return this.neighboursInfo.getNodeDegree(); + } + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2.java new file mode 100644 index 0000000..09c050f --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/NodeDegreeManagerV2.java @@ -0,0 +1,355 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery; + +import com.sun.spot.core.util.Utils; +import com.sun.spot.multihop.io.j2me.radiogram.RadiogramConnection; +import com.sun.squawk.util.NotImplementedYetException; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Level; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; +import java.io.IOException; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.Random; +import java.util.Vector; +import javax.microedition.io.Connector; +import javax.microedition.io.Datagram; + +/** + * + * @author Vicente Hern´ndez Díaz + * @version 1.0.0 + * + * Modified by Néstor Lucas Martínez for communication + * pervasiveness. + */ +public class NodeDegreeManagerV2 implements NeighborDiscoveryProtocol { + + public void doNeighborDiscovery() { + throw new NotImplementedYetException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + public void setContext(SystemContext context) { + //throw new java.lang.UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + private class NeighborsDiscoveryMgr implements Runnable { + + /** + * Message of type Neighbor Discovery Request. + */ + private final byte ND_REQUEST = 0; + /** + * Message of type Neighbor Discovery Response. + */ + private final byte ND_RESPONSE = 1; + /** + * Message of type Neighbor Discovery Response Acknowledge. + */ + private final byte ND_RESPONSE_ACK = 2; + + /** + * Port used for this particular Neighbor Discovery Protocol. + */ + private final int NEIGHBORS_DISCOVERY_PORT = 200; + + /** + * Information regarding the Node Degree (the number of available + * neighbors at any given moment). + */ + private final NDInformation nodeDegreeInformation; + + /** + * Random number generator. + */ + private final Random randomGenerator; + + public NeighborsDiscoveryMgr(NDInformation nodeDegreeInformation) { + this.nodeDegreeInformation = nodeDegreeInformation; + randomGenerator = new Random(); + logger.log(Level.DEBUG, "NeighboursDiscoveryManager: A new NeighboursDiscoveryMgr instantiated."); + new Thread(this).start(); + } + + public void requestForNeighbors() { + try { + long requestID; + requestID = randomGenerator.nextLong(); + + if (requestID < 0) { + requestID *= -1; + } + + nodeDegreeInformation.changeReqID(requestID); + RadiogramConnection con = (RadiogramConnection) Connector.open("radiogram://broadcast:" + NEIGHBORS_DISCOVERY_PORT); + con.setMaxBroadcastHops(1); + Datagram datagram = con.newDatagram(con.getMaximumLength()); + datagram.writeByte(ND_REQUEST); + datagram.writeLong(requestID); + con.send(datagram); + logger.log(Level.DEBUG, "NeighboursDiscoveryManager.requestForNeighbours: Requesting neighbours reponses."); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + private synchronized void sendMessage(String to, int type, long reqID) { + RadiogramConnection connection = null; + + try { + if (connection == null) { + connection = (RadiogramConnection) Connector.open("radiogram://" + to + ":" + NEIGHBORS_DISCOVERY_PORT); + } + + Datagram datagram = connection.newDatagram(connection.getMaximumLength()); + datagram.writeByte(type); + datagram.writeLong(reqID); + connection.send(datagram); + connection.close(); + logger.log(Level.DEBUG, "NeighborDiscoveryManager.sendMessage: A message (" + ((type == this.ND_RESPONSE) ? "RESPONSE" : ((type == this.ND_RESPONSE_ACK) ? "RESPONSE_ACK" : "UNKNOWN")) + ") sent to: " + to + " with reqID " + reqID + "."); + } catch (IOException ex) { + logger.log(Level.DEBUG, "NeighborDiscoveryManager.sendMessage: Exception trying to send a message (" + ((type == this.ND_RESPONSE) ? "RESPONSE" : ((type == this.ND_RESPONSE_ACK) ? "RESPONSE_ACK" : "UNKNOWN")) + ") to: " + to + " with reqID " + reqID + "."); + ex.printStackTrace(); + } finally { + if (connection != null) { + try { + connection.close(); + } catch (IOException ex) { + logger.log(Level.DEBUG, "NeighborDiscoveryManager.sendMessage: ERROR trying to close the connection"); + } + } + } + } + + public void run() { + Hashtable requests = new Hashtable(); + RadiogramConnection connection = null; + + boolean exit = false; + + do { + try { + if (connection == null) { + connection = (RadiogramConnection) Connector.open("radiogram://:" + this.NEIGHBORS_DISCOVERY_PORT); + connection.setTimeout(-1); + } + Datagram datagram = connection.newDatagram(connection.getMaximumLength()); + logger.log(Level.DEBUG, "NeighboursDiscoveryManager.run: Waiting for messages from neighbours."); + + connection.receive(datagram); + byte op = datagram.readByte(); + long reqID = datagram.readLong(); + logger.log(Level.DEBUG, "NeighboursDiscoveryManager.run: Message from neighbours: From: " + datagram.getAddress() + ", Op: " + op + ", ReqID: " + reqID); + switch (op) { + case ND_REQUEST: + logger.log(Level.DEBUG, "NeighboursDiscoveryManager.run: A neighbour request received: " + datagram.getAddress() + ", " + reqID + "."); + requests.put(datagram.getAddress(), new Long(reqID)); + sendMessage(datagram.getAddress(), this.ND_RESPONSE, reqID); + break; + case ND_RESPONSE: + logger.log(Level.DEBUG, "NeighboursDiscoveryManager.run: A neighbour response received: " + datagram.getAddress() + ", " + reqID + "."); + nodeDegreeInformation.addNeighbour(datagram.getAddress(), reqID); + sendMessage(datagram.getAddress(), this.ND_RESPONSE_ACK, reqID); + break; + case ND_RESPONSE_ACK: + logger.log(Level.DEBUG, "NeighboursDiscoveryManager.run: A neighbour response ack received: " + datagram.getAddress() + ", " + reqID + "."); + Object aux = requests.get(datagram.getAddress()); + if (aux != null) { + long valor = ((Long) aux).longValue(); + if (valor == reqID) { + nodeDegreeInformation.addNeighbour(datagram.getAddress()); + } + } else { + logger.log(Level.DEBUG, "NeighboursDiscoveryManager.run: A neighbour response ack received but there is no previous request."); + } + break; + } + } catch (IOException exception) { + logger.log(Level.WARNING, "NeighboursDiscoveryManager.run: Exception. Activate DEBUG Level for printing the stack trace."); + if (logger.getLevel().equals(Level.DEBUG)) { + exception.printStackTrace(); + } + } + } while (!exit); + } + } + + private class NDInformation { + + private static final long EXPIRY_TIME = 10000; + + private long requestID; + private final Hashtable neighborTable; + private final Object lock; + + public NDInformation() { + requestID = -1; + neighborTable = new Hashtable(); + lock = new Object(); + logger.log(Level.DEBUG, "NDInformation: A new NDInformation object instantiated."); + } + + public void addNeighbour(String who, long reqID) { + synchronized (lock) { + if (requestID == -1) { + logger.log(Level.DEBUG, "NDInformation.addNeighbour: Response from " + who + " rejected as no previous request was sent."); + return; + } + + if (requestID != reqID) { + logger.log(Level.DEBUG, "NDInformation.addNeighbour: Response from " + who + " rejected reqIDs don't match."); + return; + } + + this.addNeighbour(who); + } + } + + public void addNeighbour(String who) { + synchronized (lock) { + long timestamp = System.currentTimeMillis(); + if (neighborTable.containsKey(who)) { + logger.log(Level.DEBUG, "NDInformation.addNeighbour: Request from (" + who + ") accepted. There are " + neighborTable.size() + " neighbours."); + } else { + logger.log(Level.DEBUG, "NDInformation.addNeighbour: " + who + " has sent more than one response."); + } + + neighborTable.put(who, Long.valueOf(timestamp)); + displayInformation(); + } + } + + public void displayInformation() { + long nd = neighborTable.size(); + + StringBuffer neighborsCSV = new StringBuffer(); + Enumeration neighbors = neighborTable.keys(); + + while (neighbors.hasMoreElements()) { + neighborsCSV.append(neighbors.nextElement()); + if (neighbors.hasMoreElements()) { + neighborsCSV.append(","); + } + } + logger.setDestination(Logger.RECORD); + logger.debug(neighborsCSV.toString()); + logger.setDestination(Logger.SYSTEM_OUTPUT); + } + + public long getNodeDegree() { + synchronized (lock) { + long nodeDegree = (long) neighborTable.size(); + logger.log(Level.DEBUG, "NDInforamtion.getNodeDegree: Number of neighbours: " + nodeDegree + "."); + return nodeDegree; + } + } + + public Vector getNeighborList() { + synchronized (lock) { + Vector neighborList = new Vector(); + + Enumeration neighbors = neighborTable.keys(); + + while (neighbors.hasMoreElements()) { + neighborList.addElement(neighbors.nextElement()); + } + + return neighborList; + } + } + + public void changeReqID(long reqID) { + synchronized (lock) { + if (reqID >= 0) { + requestID = reqID; + logger.log(Level.DEBUG, "NDInformation.changeReqID: New request with ID " + reqID + " registered."); + } else { + logger.log(Level.DEBUG, "NDInformation.changeReqID: New request with ID " + reqID + " rejected."); + } + + // Update neighbor table + long timestamp = System.currentTimeMillis(); + Enumeration neighbors = neighborTable.keys(); + + logger.debug("NDInformation.changeReqID: updating neighborTable"); + while (neighbors.hasMoreElements()) { + Object key = neighbors.nextElement(); + long lastTimestamp = ((Long) neighborTable.get(key)).longValue(); + if ((timestamp - lastTimestamp) > EXPIRY_TIME) { + logger.debug("NDInformation.changeReqID: neighbor " + key + " has been in the table since " + lastTimestamp + " and is now EXPIRED (" + timestamp + ")"); + neighborTable.remove(key); + } else { + logger.debug("NDInformation.changeReqID: neighbor " + key + " has been in the table since " + lastTimestamp + " and is now ALIVE (" + timestamp + ")"); + + } + } + } + } + } + + private class NDTimer implements Runnable { + + private final long REQUEST_PERIOD = 10000; + + private final NeighborsDiscoveryMgr neighboursDiscoveryMgr; + + public NDTimer(NeighborsDiscoveryMgr neighboursDiscoveryMgr) { + if (neighboursDiscoveryMgr == null) { + logger.log(Level.DEBUG, "NDTimer: no manager for discovering neighbours has been provided."); + throw new IllegalArgumentException("NDTimer: no manager for discovering neighbours has been provided."); + } + this.neighboursDiscoveryMgr = neighboursDiscoveryMgr; + logger.log(Level.DEBUG, "NDTimer: a new timer for updating the node degree has been started."); + } + + public void run() { + boolean exit = false; + logger.log(Level.DEBUG, "NDTimer: Timer started."); + do { + this.neighboursDiscoveryMgr.requestForNeighbors(); + logger.log(Level.DEBUG, "NDTimer: a new request for neighbours has been invoked."); + Utils.sleep(REQUEST_PERIOD); + } while (!exit); + logger.log(Level.DEBUG, "NDTimer: the timer for updating the node degree is stopped."); + } + } + + private final Logger logger = new Logger(); + private final NDInformation neighborsInfo; + + public NodeDegreeManagerV2() { + neighborsInfo = new NDInformation(); + NeighborsDiscoveryMgr discoveryMgr = new NeighborsDiscoveryMgr(neighborsInfo); + new Thread(new NDTimer(discoveryMgr)).start(); + + } + + public long getNodeDegree() { + return this.neighborsInfo.getNodeDegree(); + } + + public Vector getNeighborList() { + return this.neighborsInfo.getNeighborList(); + } + +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery.java new file mode 100644 index 0000000..0d31963 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscovery.java @@ -0,0 +1,251 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand; + +import com.sun.spot.core.util.Queue; +import com.sun.spot.core.util.Utils; +import com.sun.spot.multihop.io.j2me.radiogram.Radiogram; +import com.sun.spot.multihop.io.j2me.radiogram.RadiogramConnection; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; +import eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryException; +import eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.NeighborDiscoveryProtocol; +import eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU; +import eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDUException; +import java.io.IOException; +import java.util.Vector; +import javax.microedition.io.Connector; + +/** + * OnDemandNeighborDiscovery implements a basic three-tiered protocol for doing + * an on demand neighbor discovery. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class OnDemandNeighborDiscovery implements NeighborDiscoveryProtocol, OnDemandNeighborDiscoveryListener { + + /** + * Default port for neighbor discovery communications. + */ + public static final int DEFAULT_PORT = 200; + /** + * Default interval for the internal incoming message handler. + */ + public static final long DEFAULT_HANDLER_INTERVAL = 100; + + private OnDemandNeighborTableManager neighborTableManager; + private OnDemandNeighborDiscoveryRequester ndRequester; + private OnDemandNeighborDiscoveryCommunicationsListener ndCommunicationsListener; + private Thread ndCommunicationsListenerThread; + private Vector incomingDataQueue; + private boolean running; + private Logger logger; + + private Queue NDRadiogramsQueue; + private NDEngine ndMessageProcessor; + private Thread ndMessageProcessorThread; + private SystemContext context; + + /** + * The main constructor for this class provides the basic functionality of + * the three-tiered DEMANES/UPM Neighbor Discovery Protocol. + */ + public OnDemandNeighborDiscovery() { + this.neighborTableManager = new OnDemandNeighborTableManager(); + this.ndRequester = new OnDemandNeighborDiscoveryRequester(DEFAULT_PORT); + + this.logger = SystemContext.getLogger(); + + this.NDRadiogramsQueue = new Queue(); + } + + /** + * Starts the neighbor discovery daemon. + */ + public void start() { + this.running = true; + + this.ndCommunicationsListener = new OnDemandNeighborDiscoveryCommunicationsListener(DEFAULT_PORT); + this.ndCommunicationsListener.addListener(this); + this.ndMessageProcessor = new NDEngine(); + + this.ndCommunicationsListenerThread = new Thread(this.ndCommunicationsListener); + this.ndMessageProcessorThread = new Thread(this.ndMessageProcessor); + + this.ndCommunicationsListenerThread.start(); + this.ndMessageProcessorThread.start(); + } + + /** + * Stops the neighbor discovery daemon. + */ + public void stop() { + this.running = false; + this.ndCommunicationsListener.setActive(false); + try { + this.ndCommunicationsListenerThread.join(); + this.ndMessageProcessorThread.join(); + } catch (InterruptedException ex) { + if (SystemContext.isDebugActive() & SystemContext.isUSBConnected()) { + ex.printStackTrace(); + } + } + } + + /** + * Indicate whether the neighbor discovery is running or not. + * + * @return True if the neighbor discovery is active, false otherwise. + */ + public boolean isRunning() { + return running; + } + + /** + * Sets the neighbor discovery running state. + * + * @param handlerAlive True if active, false otherwise. + */ + public void setRunning(boolean handlerAlive) { + this.running = handlerAlive; + } + + /** + * Get the actual number of active neighbors (node degree). + * + * @return The number of current active neighbors. + */ + public long getNodeDegree() { + return this.neighborTableManager.getNeighborCount(); + } + + /** + * Get the list if active neighbors. + * + * @return The list of current active neighbors. + */ + public Vector getNeighborList() { + return this.neighborTableManager.getNeighborList(); + } + + /** + * Notifies the parsing method that a new neighbor discovery message has + * been received. + * + * @param incomingData The unprocessed neighbor discovery message. + */ + public void notify(Radiogram incomingData) { + NDRadiogramsQueue.put(incomingData); + logger.debug("OnDemandNeighborDiscovery.notify: added incoming datagram from " + incomingData.getAddress() + " to the queue"); + } + + /** + * Performs a new neighbor discovery requests. + */ + public void doNeighborDiscovery() { + neighborTableManager.clearTable(); + ndRequester.doRequest(); + } + + /** + * Private class that implements the neighbor discovery protocol. + */ + private class NDEngine implements Runnable { + + public void run() { + Radiogram message; + while (running) { + try { + if (!NDRadiogramsQueue.isEmpty()) { + logger.debug("OnDemandNeighborDiscoveryIncomingMessages.run: Processing queue..."); + Radiogram incomingRadiogram = (Radiogram) NDRadiogramsQueue.get(); + + String address = incomingRadiogram.getAddress(); + + logger.debug("OnDemandNeighborDiscoveryIncomingMessages.run: Queue datagram from " + address); + + try { + NeighborDiscoveryPDU ndPDU = NeighborDiscoveryPDU.parsePDU(incomingRadiogram.getData()); + logger.debug("OnDemandNeighborDiscoveryIncomingMessages.run: Processing PDU of type " + ndPDU.getTypeOfPDU() + " from " + address); + + switch (ndPDU.getTypeOfPDU()) { + case NeighborDiscoveryPDU.NDPDU_REQUEST: + long incomingRequestID; + incomingRequestID = ndPDU.getRequestID(); + logger.debug("OnDemandNeighborDiscoveryIncomingMessages.run: Recevied a REQUEST message from " + incomingRadiogram.getAddress() + " with requestID " + incomingRequestID); + sendMessage(address, NeighborDiscoveryPDU.toByteArray(NeighborDiscoveryPDU.NDPDU_RESPONSE, incomingRequestID)); + break; + case NeighborDiscoveryPDU.NDPDU_RESPONSE: + if (ndRequester.checkRequestID(ndPDU.getRequestID())) { + logger.debug("OnDemandNeighborDiscoveryIncomingMessages.run: Received a RESPONSE message with VALID requestID " + ndPDU.getRequestID()); + } else { + logger.debug("OnDemandNeighborDiscoveryIncomingMessages.run: Received a RESPONSE message with INVALID requestID " + ndPDU.getRequestID()); + } + neighborTableManager.addNeighbor(address); + break; + case NeighborDiscoveryPDU.NDPDU_RESPONSE_ACK: + break; + default: + throw new NeighborDiscoveryException("OnDemandNeighborDiscoveryIncomingMessages.run: Unrecognized PDU type."); + } + } catch (NeighborDiscoveryPDUException ex) { + logger.debug("OnDemandNeighborDiscoveryIncomingMessages.run: Processing PDU exception..."); + } catch (NeighborDiscoveryException ex) { + logger.debug("OnDemandNeighborDiscoveryIncomingMessages.run: Unexpected exception..."); + } + } + Utils.sleep(DEFAULT_HANDLER_INTERVAL); + } catch (Exception ex) { + if (SystemContext.isDebugActive() & SystemContext.isUSBConnected()) { + ex.printStackTrace(); + } + Utils.sleep(DEFAULT_HANDLER_INTERVAL); + } + } + } + + private void sendMessage(String address, byte[] generatePDU) { + RadiogramConnection connection = null; + + try { + connection = (RadiogramConnection) Connector.open("radiogram://" + address + ":" + DEFAULT_PORT); + Radiogram responseDatagram = (Radiogram) connection.newDatagram(connection.getMaximumLength()); + + responseDatagram.write(generatePDU); + + connection.send(responseDatagram); + } catch (IOException ex) { + logger.debug("OnDemandNeighborDiscovery.sendMessage: Unexpected error trying to send datagram to " + address); + } finally { + if (connection != null) { + try { + connection.close(); + } catch (IOException ex) { + logger.debug("OnDemandNeighborDiscovery.sendMessage: Error closing connection after send."); + } + } + } + } + + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryCommunicationsListener.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryCommunicationsListener.java new file mode 100644 index 0000000..77055cf --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryCommunicationsListener.java @@ -0,0 +1,163 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand; + +import com.sun.spot.core.peripheral.TimeoutException; +import com.sun.spot.core.util.PrettyPrint; +import com.sun.spot.multihop.io.j2me.radiogram.Radiogram; +import com.sun.spot.multihop.io.j2me.radiogram.RadiogramConnection; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; +import java.io.IOException; +import java.util.Enumeration; +import java.util.Vector; +import javax.microedition.io.Connector; + +/** + * OnDemandNeighborDiscoveryCommunicationsListener executes a thread for + * listening neighbor discovery requests from other neighbors. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class OnDemandNeighborDiscoveryCommunicationsListener implements Runnable { + + private Vector listeners; + private int port; + + private boolean active; + private Logger logger; + + /** + * Creates a new OnDemandNeighborDiscoveryCommunicationsListener on port + * port + * + * @param port Port used for listening neighbor discovery protocol messages. + */ + public OnDemandNeighborDiscoveryCommunicationsListener(int port) { + this.listeners = new Vector(); + this.port = port; + this.active = true; + this.logger = SystemContext.getLogger(); + } + + /** + * Gets the port used in this listener. + * + * @return The port used in this listener. + */ + public int getPort() { + return port; + } + + /** + * Sets a new port for listening to neighbor requests. + * + * @param port The new port. + */ + public void setPort(int port) { + this.port = port; + } + + /** + * Indicate whether this listener is active or not. + * + * @return True if the listener is active, false otherwise. + */ + public boolean isActive() { + return active; + } + + /** + * Set the active status for this listener. + * + * @param active Sets the status for this listener, true for active, false + * otherwise. + */ + public void setActive(boolean active) { + this.active = active; + } + + /** + * Adds a listener for parsing new neigbor discovery messages. + * + * @param listener The listener for new messages. + */ + public void addListener(OnDemandNeighborDiscoveryListener listener) { + listeners.addElement(listener); + } + + /** + * Removes a listener + * + * @param listener The listener to be removed. + */ + public void removeListener(OnDemandNeighborDiscoveryListener listener) { + listeners.removeElement(listener); + } + + /** + * The run method is used to be executed as a separate thread, providing a + * loop for listening for new neighbor discovery messages and parsing them. + */ + public void run() { + RadiogramConnection connection = null; + Radiogram incomingDatagram; + + while (active) { + try { + if (connection == null) { + connection = (RadiogramConnection) Connector.open("radiogram://:" + this.port); + } + incomingDatagram = (Radiogram) connection.newDatagram(connection.getMaximumLength()); + + connection.receive(incomingDatagram); + Radiogram receivedDatagram = incomingDatagram; + logger.debug("NeighboursDiscoveryCommunicationsListener.run: Received incoming datagram from " + incomingDatagram.getAddress()); + logger.debug(PrettyPrint.prettyPrint(receivedDatagram.getData())); + + Enumeration listenerList = listeners.elements(); + while (listenerList.hasMoreElements()) { + ((OnDemandNeighborDiscoveryListener) listenerList.nextElement()).notify(receivedDatagram); + } + + } catch (TimeoutException exception) { + // Do nothing + } catch (IOException exception) { + logger.warning("NeighboursDiscoveryCommunicationsListener.run: Exception. Activate DEBUG Level for printing the stack trace."); + if (SystemContext.isDebugActive() & SystemContext.isUSBConnected()) { + exception.printStackTrace(); + } + } + } + + if (connection != null) { + try { + connection.close(); + } catch (IOException ex) { + if (SystemContext.isDebugActive() & SystemContext.isUSBConnected()) { + ex.printStackTrace(); + } + } + } + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryListener.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryListener.java new file mode 100644 index 0000000..dee620c --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryListener.java @@ -0,0 +1,36 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand; + +import com.sun.spot.multihop.io.j2me.radiogram.Radiogram; + +/** + * OnDemandNeighborDiscoveryListener defines the interface used by the + * listener of neighbor discovery requests issued by other motes. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public interface OnDemandNeighborDiscoveryListener { + public void notify(Radiogram incomingData); + +} \ No newline at end of file diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryRequester.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryRequester.java new file mode 100644 index 0000000..2e8fa59 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborDiscoveryRequester.java @@ -0,0 +1,169 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand; + +import com.sun.spot.core.util.Utils; +import com.sun.spot.multihop.io.j2me.radiogram.Radiogram; +import com.sun.spot.multihop.io.j2me.radiogram.RadiogramConnection; +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; +import eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU; +import eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDUException; +import java.io.IOException; +import java.util.Random; +import java.util.Vector; +import javax.microedition.io.Connector; + +/** + * OnDemandNeighborDiscoveryRequester is used to manage the issue of a + * neighbor discovery request. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class OnDemandNeighborDiscoveryRequester implements Runnable { + private static final long DEFAULT_INTERVAL = 500; + private static final int MAXIMUM_VALID_REQUEST_ID = 10; + + private long interval; + private long requestID; + private final int port; + + private Vector validRequestIDs; + + private Object lock; + private Logger logger; + private boolean active; + + private Random randomGenerator; + + /** + * Creates a new Neighbor Discovery Requester on port port. + * + * @param port Port for use in the Neighbor Discovery Protocol + */ + public OnDemandNeighborDiscoveryRequester(int port) { + this.interval = DEFAULT_INTERVAL; + this.port = port; + + this.validRequestIDs = new Vector(); + + this.lock = new Object(); + this.logger = SystemContext.getLogger(); + this.active = true; + + this.randomGenerator = new Random(); + } + + /** + * Checks if the Neighbor Discovery Requester is alive. + * + * @return true if the Requester is alive. false otherwise. + */ + public boolean isActive() { + return active; + } + + /** + * Sets the active status of the Neighbor Discovery Requester. + * + * @param active + */ + public void setActive(boolean active) { + this.active = active; + } + + /** + * Run method for being run as a thread. + */ + public void run() { + while (active) { + doRequest(); + Utils.sleep(interval); + } + } + + /** + * Generates a new request identifier on demand. The request identifier is + * always a positive long number. + * + * @return a new request identifier + */ + private long generateRequestID() { + long generatedRequestID; + + generatedRequestID = this.randomGenerator.nextLong(); + generatedRequestID = generatedRequestID >= 0 ? generatedRequestID : (-1 * generatedRequestID); + + synchronized (lock) { + if (this.validRequestIDs.size() >= MAXIMUM_VALID_REQUEST_ID) { + this.validRequestIDs.removeElement(this.validRequestIDs.firstElement()); + this.validRequestIDs.trimToSize(); + } + } + + this.validRequestIDs.addElement(Long.valueOf(generatedRequestID)); + + return generatedRequestID; + } + + /** + * Checks the validity of a passed by request ID. + * + * @param requestID The request ID to be checked up. + * @return True if the request ID is valid. False otherwise. + */ + public boolean checkRequestID(long requestID) { + synchronized (lock) { + return this.validRequestIDs.contains(Long.valueOf(requestID)); + } + } + + /** + * Performs a neighbor request. + */ + public void doRequest() { + RadiogramConnection connection = null; + Radiogram requestDatagram; + byte[] pduRequest; + + requestID = generateRequestID(); + try { + pduRequest = NeighborDiscoveryPDU.toByteArray(NeighborDiscoveryPDU.NDPDU_REQUEST, requestID); + + if (connection == null) { + connection = (RadiogramConnection) Connector.open("radiogram://broadcast:" + this.port); + } + + requestDatagram = (Radiogram) connection.newDatagram(connection.getMaximumLength()); + requestDatagram.reset(); + requestDatagram.write(pduRequest); + + connection.send(requestDatagram); + logger.debug("NeighborDiscoveryRequester.doRequest: Sent datagram of type REQUEST and requestID " + requestID); + } catch (NeighborDiscoveryPDUException ex) { + logger.warning("NeighborDiscoveryRequester.doRequest: A problem occurred while trying to parse a NDP PDU."); + } catch (IOException ex) { + logger.warning("NeighborDiscoveryRequester.doRequest: A problem occurred while trying to send a REQUEST."); + } + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborTableManager.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborTableManager.java new file mode 100644 index 0000000..265da16 --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/ondemand/OnDemandNeighborTableManager.java @@ -0,0 +1,197 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.ondemand; + +import eu.artemis.demanes.impl.SunSPOT.common.SystemContext; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Level; +import eu.artemis.demanes.impl.SunSPOT.utils.logging.Logger; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.Vector; + +/** + * OnDemandNeighborTableMAnager implements the table used to store the active + * neighbors detected by the Neighbor Discovery Protocol. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class OnDemandNeighborTableManager { + + private static final long DEFAULT_EXPIRY_TIME = 5000; + + private Hashtable neighborTable; + private Vector neighborList; + private long expiryTime; + private StringBuffer neighborsCSV; + + private final Logger logger; + private final Object lock; + + /** + * Creates a new instance of the neighbor table manager using the default + * expiry time for new entries. + */ + public OnDemandNeighborTableManager() { + this.neighborTable = new Hashtable(); + this.neighborList = new Vector(); + this.expiryTime = DEFAULT_EXPIRY_TIME; + this.neighborsCSV = new StringBuffer(); + this.lock = new Object(); + this.logger = SystemContext.getLogger(); + } + + /** + * Creates a new instance of the neighbor table manager using the expiry + * time especified by expiryTime. + * + * @param expiryTime The expiry time for new entries in the table. + */ + public OnDemandNeighborTableManager(long expiryTime) { + this(); + this.expiryTime = expiryTime; + } + + /** + * Sets a new expiry time. + * + * @param expiryTime The new expiry time. + */ + public void setExpiryTime(long expiryTime) { + this.expiryTime = expiryTime; + } + + /** + * Gets the current expiry time. + * + * @return The current expiry time. + */ + public long getExpiryTime() { + return this.expiryTime; + } + + /** + * Gets the number of acive neighbors registered in the table. + * + * @return The number of active neighbors. + */ + public int getNeighborCount() { + synchronized (lock) { + logNeighborInformation(); + + return this.neighborTable.size(); + } + } + + /** + * Retrives the list of active neighbors. + * + * @return The list of active neighbors. + */ + public Vector getNeighborList() { + synchronized (lock) { + this.neighborList.removeAllElements(); + Enumeration neighbors = this.neighborTable.keys(); + + while (neighbors.hasMoreElements()) { + neighborList.addElement(neighbors.nextElement()); + } + + return neighborList; + } + } + + /** + * Adds a neighbor to the table. + * + * @param neighborAddress The address of the neighbor + */ + public void addNeighbor(String neighborAddress) { + synchronized (lock) { + long timestamp = System.currentTimeMillis(); + if (neighborTable.containsKey(neighborAddress)) { + logger.log(Level.DEBUG, "OnDemandNeighborTableManager.addNeighbour: Request from (" + neighborAddress + ") accepted. There are " + neighborTable.size() + " neighbours."); + } else { + logger.log(Level.DEBUG, "OnDemandNeighborTableManager.addNeighbour: " + neighborAddress + " has sent more than one response."); + } + + neighborTable.put(neighborAddress, Long.valueOf(timestamp)); + } + } + + /** + * Performs a maintenance check of the neighbor table, removing those + * neighbors which their last alive update is greater than the expiry time. + */ + public void maintainNeighborTable() { + synchronized (lock) { + long actualTimestamp = System.currentTimeMillis(); + Enumeration neighbors = neighborTable.keys(); + + while (neighbors.hasMoreElements()) { + Object key = neighbors.nextElement(); + long recordedTimestamp = ((Long) neighborTable.get(key)).longValue(); + long timeAlive = actualTimestamp - recordedTimestamp; + + if (timeAlive > this.expiryTime) { + logger.debug("OnDemandNeighborTableManager.maintainNeighborTable: Time for neighbor " + key + " has expired (" + timeAlive + "). REMOVING"); + neighborTable.remove(key); + } + } + } + } + + /** + * Logs neighbor information. For debug purposes only. + */ + public void logNeighborInformation() { + long nd = neighborTable.size(); + + neighborsCSV.setLength(0); + Enumeration neighbors = neighborTable.keys(); + + while (neighbors.hasMoreElements()) { + neighborsCSV.append((String) neighbors.nextElement()); + if (neighbors.hasMoreElements()) { + neighborsCSV.append(","); + } + } + + if (nd > 0) { + if (SystemContext.isDebugActive()) { + byte originalDestination = logger.getDestination(); + logger.setDestination(Logger.RECORD); + logger.debug(neighborsCSV.toString()); + logger.setDestination(originalDestination); + } + } + } + + /** + * Clears the neighbor table. + */ + public void clearTable() { + synchronized (lock) { + this.neighborTable.clear(); + } + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDU.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDU.java new file mode 100644 index 0000000..2dd10ac --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDU.java @@ -0,0 +1,191 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ + +package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * Neighbor Discovery PDU is a representation of a PDU for the Neighbor Discovery + * Protocol. + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class NeighborDiscoveryPDU { + + private static final String PROTOCOL_ID = "NDP"; + + private static final byte VERSION = 0x02; + + public static final byte NDPDU_REQUEST = 0x01; + public static final byte NDPDU_RESPONSE = 0x02; + public static final byte NDPDU_RESPONSE_ACK = 0x03; + + private byte typeOfPDU; + private long requestID; + + /** + * Public constructor. Creates a new PDU of type typeOfPDU with a + * request ID requestID. + * + * @param typeOfPDU Type of the Neighbor Discovery PDU + * @param requestID Request ID + */ + public NeighborDiscoveryPDU(byte typeOfPDU, long requestID) { + this.typeOfPDU = typeOfPDU; + this.requestID = requestID; + } + + /** + * Creates a newly allocated byte array for a Neighbor Discovery PDU of type + * typeOfPDU and request ID requestID. + * + * @param typeOfPDU Type of PDU + * @param requestID Request ID + * @return The newly allocated byte array representing the PDU + * @throws NeighborDiscoveryPDUException + */ + public static byte[] toByteArray(byte typeOfPDU, long requestID) throws NeighborDiscoveryPDUException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + DataOutputStream dos = new DataOutputStream(baos); + + try { + dos.write(PROTOCOL_ID.getBytes()); + dos.writeByte(VERSION); + dos.writeByte(typeOfPDU); + dos.writeLong(requestID); + } catch (IOException exception) { + throw new NeighborDiscoveryPDUException("generatePDU", "Error trying to write the PDU to a byte array"); + } + + return baos.toByteArray(); + } + + /** + * Get the type of instanced PDU + * + * @return The type of PDU + */ + public byte getTypeOfPDU() { + return typeOfPDU; + } + + /** + * Set the type of the instanced PDU + * + * @param typeOfPDU the type of PDU + */ + public void setTypeOfPDU(byte typeOfPDU) { + this.typeOfPDU = typeOfPDU; + } + + /** + * Get the request ID of the instanced PDU + * + * @return the request ID + */ + public long getRequestID() { + return requestID; + } + + /** + * Set the request ID of the instanced PDU + * + * @param requestID the request ID + */ + public void setRequestID(long requestID) { + this.requestID = requestID; + } + + /** + * Parse a byte array containing a Neighbor Discovery PDU. + * + * @param pdu the byte array containing the Neighbor Discovery PDU + * @return the instanced NeighborDiscoveryPDU + * @throws NeighborDiscoveryPDUException if the byte array does not comply with the Neighbor Discovery PDU + */ + public static NeighborDiscoveryPDU parsePDU(byte[] pdu) throws NeighborDiscoveryPDUException { + final String methodName = "parsePDU"; + + String protocolID; + byte version; + byte typeOfPDU; + long requestID; + + DataInputStream dis = new DataInputStream(new ByteArrayInputStream(pdu)); + + byte[] pidArray = new byte[NeighborDiscoveryPDU.PROTOCOL_ID.length()]; + + try { + dis.read(pidArray, 0, NeighborDiscoveryPDU.PROTOCOL_ID.length()); + } catch (IOException ex) { + throw new NeighborDiscoveryPDUException(methodName, "Unable to read the protocol ID."); + } + + protocolID = new String(pidArray); + + if (!protocolID.equalsIgnoreCase(NeighborDiscoveryPDU.PROTOCOL_ID)) { + throw new NeighborDiscoveryPDUException(methodName, "Protocol ID mismatch. Expected \"" + NeighborDiscoveryPDU.PROTOCOL_ID + "\" and found " + protocolID); + } + + try { + version = dis.readByte(); + } catch (IOException ex) { + throw new NeighborDiscoveryPDUException(methodName, "Unable to read the protocol version."); + } + + if (version != NeighborDiscoveryPDU.VERSION) { + throw new NeighborDiscoveryPDUException(methodName, "Protocol version mismatch."); + } + + try { + typeOfPDU = dis.readByte(); + } catch (IOException ex) { + throw new NeighborDiscoveryPDUException(methodName, "Unable to read the type of PDU."); + } + + if (typeOfPDU != NeighborDiscoveryPDU.NDPDU_REQUEST) { + if (typeOfPDU != NeighborDiscoveryPDU.NDPDU_RESPONSE) { + if (typeOfPDU != NeighborDiscoveryPDU.NDPDU_RESPONSE_ACK) { + throw new NeighborDiscoveryPDUException(methodName, "Unrecognized PDU type."); + } + } + } + + try { + requestID = dis.readLong(); + } catch (IOException ex) { + throw new NeighborDiscoveryPDUException(methodName, "Unable to read the request ID."); + } + + if (requestID < 0) { + throw new NeighborDiscoveryPDUException(methodName, "Invalid request ID."); + } + + return new NeighborDiscoveryPDU(typeOfPDU, requestID); + } +} diff --git a/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDUException.java b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDUException.java new file mode 100644 index 0000000..a7cbb8a --- /dev/null +++ b/src/eu/artemis/demanes/impl/SunSPOT/utils/neighbordiscovery/pdu/NeighborDiscoveryPDUException.java @@ -0,0 +1,41 @@ +/** + * Copyright 2014-2015 Universidad Politécnica de Madrid (UPM). + * + * Authors: + * José-Fernan Martínez Ortega + * Vicente Hernández Díaz + * Néstor Lucas Martínez + * Yuanjiang Huang + * Raúl del Toro Matamoros + * + * This software is distributed under a dual-license scheme: + * + * - For academic uses: Licensed under GNU Affero General Public License as + * published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any + * later version. + * + * - For any other use: Licensed under the Apache License, Version 2.0. + * + * You can get a copy of the license terms in licences/LICENSE. + */ +package eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu; + +/** + * An NeighborDiscoveryPDUException is thrown to indicate that an error occurred + * during the generation or parsing of a {@linkplain NeighborDiscoveryPDU}. The + * original exception is added as a cause. + * + * @see eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU#toByteArray + * @see eu.artemis.demanes.impl.SunSPOT.utils.neighbordiscovery.pdu.NeighborDiscoveryPDU#parsePDU + * + * @author Néstor Lucas Martínez + * @version 1.0.0 + */ +public class NeighborDiscoveryPDUException extends Exception { + + public NeighborDiscoveryPDUException(String method, String reason) { + super("NeighborDiscoveryPDU." + method + ": " + reason); + } + +} diff --git a/src/eu/artemis/demanes/reconfiguration/Action.java b/src/eu/artemis/demanes/reconfiguration/Action.java new file mode 100644 index 0000000..a7ff466 --- /dev/null +++ b/src/eu/artemis/demanes/reconfiguration/Action.java @@ -0,0 +1,103 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.reconfiguration; + +import eu.artemis.demanes.datatypes.ANES_BUNDLE; +import eu.artemis.demanes.datatypes.ANES_URN; +import eu.artemis.demanes.exceptions.ActionInvocationException; + +/** + *

+ * An action is the unit of reconfiguration actuation. The user must use Actions + * to modify the system in any way the Actions allow it to. If there is no + * Action object that enables the modification of the system, then it cannot be + * modified. + *

+ * + *

+ * Every Action has a unique identifier that denotes the type of action that it + * performs. This identifier must be specific not only for the type of Action + * that it performs, but also on what specific part of the system it will + * perform this Action. + *

+ * + *

+ * Once an Action exists, and has been made available to modify the system, the + * user may call the {@link #invoke(ANES_BUNDLE)} method. This will do the + * actual modification, possibly influenced by a set of arguments. + *

+ * + * @see Observation + * + * @author DEMANES + * @version 0.1 + * @since 27 nov. 2013 + * + */ +public interface Action { + + /** + *

+ * Returns the unique identifier of this Action. + *

+ * + *

+ * Every Action is uniquely identifiable via a ANES_URN identifier. By + * obtaining this identifier, the user should be able to know what the + * Action will do if invoked, an what (sub)component of the system is + * influenced by it. + *

+ * + * @return An ANES_URN uniquely identifying the action + */ + public ANES_URN getActionID(); + + /** + *

+ * Invokes the action + *

+ * + *

+ * As a generic way to have Actions modify the system, this method must + * always be called in order to have the Action perform it's modification on + * the system as it is intended to do. Any other functions of the Action may + * exist but will not modify the rest of the system. + *

+ * + * @param arguments + * The arguments may indicate a specification of how the action + * should be invoked. For instance in order to modify a parameter + * of a component, the new parameter value can be one of the + * elements in the argument list. + * @throws ActionInvocationException + * If at some point in the invocation of the Action an error + * occurs which disallows the proper modification of the system, + * an ActionInvocationException is thrown indicating that the + * invocation failed. + */ + public void invoke(ANES_BUNDLE arguments) throws ActionInvocationException; + +} + +/** + *

Assumptions:

+ * + *

+ * Because the Reasoner will never get the actual Action, but will only invoke + * actions via the ActionProvider interface, there is no use implementing other + * functions that would provide information to the Reasoner. + *

+ */ diff --git a/src/eu/artemis/demanes/reconfiguration/ActionProvider.java b/src/eu/artemis/demanes/reconfiguration/ActionProvider.java new file mode 100644 index 0000000..e3e7464 --- /dev/null +++ b/src/eu/artemis/demanes/reconfiguration/ActionProvider.java @@ -0,0 +1,99 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.reconfiguration; + +import eu.artemis.demanes.datatypes.ANES_BUNDLE; +import eu.artemis.demanes.datatypes.ANES_URN; +import eu.artemis.demanes.exceptions.ActionInvocationException; +import eu.artemis.demanes.exceptions.InexistentActionID; +import java.util.Vector; + +/** + *

+ * The ActionProvider is the interface through which an object can obtain the + * available actions to reconfigure the system. The purpose of it is to provide + * a generic interface from which the reconfiguration process can be controlled. + *

+ * + *

+ * If an object is an ActionProvider, this means that it is responsible for + * invoking the correct {@linkplain Action} object, identified by it's + * {@linkplain ANES_URN}. + *

+ * + * @author DEMANES + * @version 0.1 + * @since 27 nov. 2013 + * + */ +public interface ActionProvider { + + /** + *

+ * Query the Actions that can be invoked using this ActionProvider + *

+ * + *

+ * The {@linkplain #invoke(ANES_URN, ANES_BUNDLE)} function requires a + * ANES_URN argument which identifies which action to invoke. By using this + * function the user gets an array which indicate what the relevant + * ANES_URNs can be used as a valid argument. + *

+ * + *

+ * If there are no possible actions that can be invokes, this function will + * return null. + *

+ * + * @return an Array of ANES_URNs that can be invoked using this + * ActionProvider. + */ + Vector getActions(); + + /** + *

+ * Invokes a specific {@linkplain Action} in order to modify the system + *

+ * + *

+ * By calling this function, the user can specify that an Action with a + * specific identifier should be invoked. This results internally in + * invoking the corresponding Action. + *

+ * + * @param id + * In order to resolve which Action to invoke, the identity of + * the corresponding Action should be provided. To obtain a list + * of available actions from this ActionProvider, use the + * {@linkplain #getActions()} function. + * @param arguments + * The arguments may indicate a specification of how the action + * should be invoked. For instance in order to modify a parameter + * of a component, the new parameter value can be one of the + * elements in the argument list. + * @throws InexistentActionID + * If the provided id can not be resolved by the ActionProvider, + * an exception is thrown, indicating that the this identifier + * does not exist. (As far as this ActionProvider concerns) + * @throws ActionInvocationException + * Is thrown if the invoked action cannot successfully complete. + * + * @see Action#invoke(ANES_BUNDLE) + */ + void invoke(ANES_URN id, ANES_BUNDLE arguments) throws InexistentActionID, + ActionInvocationException; + +} \ No newline at end of file diff --git a/src/eu/artemis/demanes/reconfiguration/Actuator.java b/src/eu/artemis/demanes/reconfiguration/Actuator.java new file mode 100644 index 0000000..68f45e3 --- /dev/null +++ b/src/eu/artemis/demanes/reconfiguration/Actuator.java @@ -0,0 +1,58 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.reconfiguration; + +import java.util.Vector; + +/** + *

+ * An object implementing the Actuator interface (so it is an actuator) is the + * interface to obtain {@linkplain Action}s. Every system component which is + * reconfigurable should come with at least one actuator. + *

+ * + *

+ * Actuators are made by the designers of system component, and can provide one + * or more {@linkplain Action}s by which the components can be changed. The + * actuator is merely the interface to actions that correspond to a component, + * and should not contain the functionality to change the component itself. + *

+ * + * @see Observer + * + * @author DEMANES + * @version 0.1 + * @since 27 nov. 2013 + * + */ +public interface Actuator { + + /** + *

+ * In order for the user to obtain all {@linkplain Action}s by which a + * system component may be changed, this function returns an array of + * actions which are available. + *

+ * + *

+ * If there are no actions available this function returns null + *

+ * + * @return an Array or Actions that may be invoked to reconfigure the system + */ + public Vector getActions(); + +} \ No newline at end of file diff --git a/src/eu/artemis/demanes/reconfiguration/ActuatorRegistry.java b/src/eu/artemis/demanes/reconfiguration/ActuatorRegistry.java new file mode 100644 index 0000000..06e912e --- /dev/null +++ b/src/eu/artemis/demanes/reconfiguration/ActuatorRegistry.java @@ -0,0 +1,57 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.reconfiguration; + +/** + *

+ * An ActuatorRegistry is used to combine all actuators that control the + * behavior of the reconfiguration. By adding {@linkplain Actuators} the user + * can provide the means by which the system can be modified. + *

+ * + * @see Actuator + * + * @author DEMANES + * @version 0.1 + * @since 27 nov. 2013 + * + */ +public interface ActuatorRegistry { + + /** + *

+ * Add a {@linkplain Actuator} object to the collection of actuators by + * which the ReasoningEngine can modify the system. If the actuator has + * already been registered before, nothing changes. + *

+ * + * @param a + * the Actuator to register. + */ + public void registerActuator(Actuator a); + + /** + *

+ * Remove a {@linkplain Actuator} object from the collection of actuators. + * This function should be called before the actuator is destroyed. If the + * object was not registered before, nothing happens. + *

+ * + * @param a + * the object that no longer can be used. + */ + public void unregisterActuator(Actuator a); +} \ No newline at end of file diff --git a/src/eu/artemis/demanes/reconfiguration/ORAMediator.java b/src/eu/artemis/demanes/reconfiguration/ORAMediator.java new file mode 100644 index 0000000..6a67cca --- /dev/null +++ b/src/eu/artemis/demanes/reconfiguration/ORAMediator.java @@ -0,0 +1,107 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.reconfiguration; + +/** + *

+ * The ORAMediator defines the interface trough which Observers, Reasoners, + * Actuators and TriggerPolicies come together. This is the main component in + * which the mediates these different reconfiguration modules. + *

+ * + *

+ * ORAMediator stands for Observe - Reason - Act Mediator. It is the object in + * which the cycle (similar to the MAPE cycle) is bound together. Hence it uses + * the Mediator design pattern to combine the three modules. The TriggerPolicy + * is not part of the acronym as it is not considered as a primary function of + * the of the mediator, instead it is just a utility. + *

+ * + *

+ * A ORAMediator is used to combine all interfaces that define the behavior of + * the reconfiguration. By adding {@linkplain Observers} and + * {@linkplain Actuators} the user can provide the means by which the system can + * be observed and modified. The {@linkplain Reasoner} can be set to define how + * the system can make a decision to take an action. And finally the + * {@linkplain TriggeringPolicy} can be set to determine when the Reasoner + * should make these decisions. + *

+ * + * @see Actuator + * @see Observer + * @see Reasoner + * @see TriggerPolicy + * + * @author DEMANES + * @version 0.1 + * @since 27 nov. 2013 + * + */ +public interface ORAMediator extends ObserverRegistry, ActuatorRegistry { + + /** + *

+ * Set an object with the {@linkplain Reasoner} as the current reasoner. + * This reasoner object defines the behavior of the reconfiguration. + *

+ * + *

+ * There can only be one reasoner at a time, so if this function is called + * when another reasoner is set, this function overwrites it. + *

+ * + * @param r + * an Object with the Reasoner specifying how the decisions + * should be made to reconfigure the system. + */ + public void setReasoner(Reasoner r); + + /** + *

+ * Set an object with the {@linkplain TriggerPolicy} as the current + * triggering policy. This policy object defines the when the + * reconfiguration reasoner should be triggered. For example if the reasoner + * should be triggered periodically or if a threshold is reached. + *

+ * + *

+ * There can only be one triggering policy at a time, so if this function is + * called when another triggering policy is set, this function overwrites + * it. + *

+ * + * @param r + * an Object with the TriggerPolicy specifying when the reasoner + * should be activated to reconfigure the system. + */ + public void setTriggeringPolicy(TriggerPolicy t); + +} + +/** + *

Assumptions

+ * + *

+ * AFTER the setReasoner function is called or AFTER the setTriggeringPolicy is + * called, the registerTriggerable() function is called on the TriggeringPolicy + * with the Reasoner. + *

+ * + *

+ * This makes sure that at all times, the Reasoner is registered as Triggerable + * in the TriggeringPolicy. + *

+ */ diff --git a/src/eu/artemis/demanes/reconfiguration/Observation.java b/src/eu/artemis/demanes/reconfiguration/Observation.java new file mode 100644 index 0000000..4cb7455 --- /dev/null +++ b/src/eu/artemis/demanes/reconfiguration/Observation.java @@ -0,0 +1,102 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.reconfiguration; + +import eu.artemis.demanes.datatypes.ANES_URN; +import eu.artemis.demanes.exceptions.ObservationInvocationException; + +/** + *

+ * An Observation is the unit of monitoring the system for reconfiguration. The + * user must use Observations to monitor the system in any way the Observation + * allow it to. If there is no Observation object that enables the monitoring of + * the system, then it cannot be monitored. + *

+ * + *

+ * Every Observation has a unique identifier that denotes the type of + * observation that it provides. This identifier must be specific not only for + * the type of observation, but also what specific component of the system it + * will observe. + *

+ * + *

+ * Once an Observation exists, and has been made available to the system, the + * user may call the {@link #getValue()} method. This will do the actual + * observation and provide the value that represents the status. + *

+ * + * @see Action + * + * @author DEMANES + * @version 0.1 + * @since 27 nov. 2013 + * + */ +public interface Observation { + + /** + *

+ * Returns the unique identifier of this Observation. + *

+ * + *

+ * Every Observation is uniquely identifiable via a {@linkplain ANES_URN} + * identifier. By obtaining this identifier, the user should be able to know + * what property the Observation will observe, an what (sub)component of the + * system it is observing. + *

+ * + * @return An ANES_URN uniquely identifying the observation + */ + public ANES_URN getObservationID(); + + /** + *

+ * Get the value of the observation + *

+ * + *

+ * As a generic way to have Observations monitor the system, this method + * must always be called in order to have the Observation get the + * information from the system as it is intended to do. Any other functions + * of the Action may exist but will get information from the system + * component. + *

+ * + * @return an Object which represents the value of the observation. An + * Observation may specify what type of Object is returned, but any + * type of return value is possible. + * @throws ObservationInvocationException + * If at some point in obtaining the information from the system + * an error occurs, an ObservationInvocationException is thrown + * indicating that the observation failed. + */ + public Object getValue() throws ObservationInvocationException; + +} + +/** + *

Assumptions

+ * + *

+ * It is possible that the results of the observation are a buffered version of + * the information. This means that calling {@link #getValue()} will not do the + * observation itself, but the information is gathered at some intermediate + * moment. This is a choice of the designer of the Observation, but will have to + * be stated explicitly to the user. + *

+ */ diff --git a/src/eu/artemis/demanes/reconfiguration/ObservationProvider.java b/src/eu/artemis/demanes/reconfiguration/ObservationProvider.java new file mode 100644 index 0000000..cf23115 --- /dev/null +++ b/src/eu/artemis/demanes/reconfiguration/ObservationProvider.java @@ -0,0 +1,93 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.reconfiguration; + +import eu.artemis.demanes.datatypes.ANES_URN; +import eu.artemis.demanes.exceptions.InexistentObservationID; +import eu.artemis.demanes.exceptions.ObservationInvocationException; +import java.util.Vector; + +/** + *

+ * The ObservationProvider is the interface through which an object can obtain + * the available observations to monitor the system. The purpose of it is to + * provide a generic interface from which the reconfiguration process can obtain + * information from the system. + *

+ * + *

+ * If an object is an ObservationProvider, this means that it is responsible for + * providing the correct {@linkplain Observation} value, identified by it's + * {@linkplain ANES_URN}. + *

+ * + * @author DEMANES + * @version 0.1 + * @since 27 nov. 2013 + * + */ +public interface ObservationProvider { + + /** + *

+ * Query the Observations that can be obtained from this ObservationProvider + *

+ * + *

+ * The {@linkplain #getValue(ANES_URN)} function requires a ANES_URN + * argument which identifies which observation to obtain. By using this + * function the user gets an array which indicate what the relevant + * ANES_URNs can be used as a valid argument. + *

+ * + *

+ * If there are no possible observations that can be obtained, this function + * will return null. + *

+ * + * @return an Array of ANES_URNs that can be observed using this + * ActionProvider. + */ + Vector getObservations(); + + /** + *

+ * Get the value of a specific {@linkplain Observation} in order to monitor + * the system + *

+ * + *

+ * By calling this function, the user can specify that an Observation with a + * specific identifier should be invoked. This results internally in + * invoking the corresponding Observation. + *

+ * + * @param id In order to resolve which Observation to invoke, the identity + * of the corresponding Observation should be provided. To obtain a list of + * available observations from this ObservationProvider, use the + * {@linkplain #getObservations()} function. + * @throws InexistentObservationID If the provided id can not be resolved by + * the ObservationProvider, an exception is thrown, indicating that the this + * identifier does not exist. (As far as this ObservationProvider concerns) + * @throws ObservationInvocationException Is thrown if the observation + * cannot successfully obtain it's information. + * + * @see Observation#getValue() + */ + public Object getValue(ANES_URN id) throws InexistentObservationID, + ObservationInvocationException; + +} diff --git a/src/eu/artemis/demanes/reconfiguration/Observer.java b/src/eu/artemis/demanes/reconfiguration/Observer.java new file mode 100644 index 0000000..4020140 --- /dev/null +++ b/src/eu/artemis/demanes/reconfiguration/Observer.java @@ -0,0 +1,62 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.reconfiguration; + +import java.util.Vector; + + +/** + *

+ * An object having the the Observer interface (so it is an observer) is the + * interface to obtain {@linkplain Observations}s. Every system component which + * provides information as input for reconfiguration should come with at least + * one observer. + *

+ * + *

+ * Observers are made by the designers of the corresponding system component, + * and can provide one or more {@linkplain Observations}s which indicate what + * the status is of the component. The observer is merely the interface to + * observations that correspond to a component, and should not contain the + * functionality to monitor the component itself. + *

+ * + * @see Actuator + * + * @author DEMANES + * @version 0.1 + * @since 27 nov. 2013 + * + */ +public interface Observer { + + /** + *

+ * In order for the user to obtain all {@linkplain Observations}s which + * provide information about the system component, this function returns an + * array of observations which are available. + *

+ * + *

+ * If there are no observations available this function returns null + *

+ * + * @return an Array or Observations that may be used to obtain information + * about the system + */ + public Vector getObservations(); + +} \ No newline at end of file diff --git a/src/eu/artemis/demanes/reconfiguration/ObserverRegistry.java b/src/eu/artemis/demanes/reconfiguration/ObserverRegistry.java new file mode 100644 index 0000000..4c267a1 --- /dev/null +++ b/src/eu/artemis/demanes/reconfiguration/ObserverRegistry.java @@ -0,0 +1,59 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.reconfiguration; + +/** + *

+ * A ObserverRegistry is used on the side of the ORAMediator to combine all + * Observers that provide input for the reconfiguration. By adding + * {@linkplain Observers} the user can provide the means by which the system can + * be observed. + *

+ * + * @see Observer + * + * @author DEMANES + * @version 0.1 + * @since 27 nov. 2013 + * + */ +public interface ObserverRegistry { + + /** + *

+ * Add a {@linkplain Observer} object to the collection of observers by + * which the ReasoningEngine can monitor the system. If the observer has + * already been registered before, nothing changes. + *

+ * + * @param a + * the Observer to register. + */ + public void registerObserver(Observer o); + + /** + *

+ * Remove a {@linkplain Observer} object from the collection of observers. + * This function should be called before the observer is destroyed. If the + * object was not registered before, nothing happens. + *

+ * + * @param a + * the observer that should be unregistered. + */ + public void unregisterObserver(Observer o); + +} \ No newline at end of file diff --git a/src/eu/artemis/demanes/reconfiguration/Reasoner.java b/src/eu/artemis/demanes/reconfiguration/Reasoner.java new file mode 100644 index 0000000..2b55051 --- /dev/null +++ b/src/eu/artemis/demanes/reconfiguration/Reasoner.java @@ -0,0 +1,86 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.reconfiguration; + +/** + *

+ * The Reasoner specifies the input and the output of the reasoner. It allows + * for generalized methods for providing the information needed for the reasoner + * (e.g. KPIs) and methods for providing it's output possibilities. + *

+ * + *

+ * The input of the reasoner is via an object that provides the reasoner with + * {@linkplain Observation}s. The output of a reasoner is via an object that + * provides it with a set of {@linkplain Action}s. + *

+ * + * @author DEMANES + * @version 0.1 + * @since 27 nov. 2013 + * + */ +public interface Reasoner extends Triggerable { + + /** + *

+ * Sets the object that will provide this Reasoner with it's actuators. + *

+ * + *

+ * This function specifies that an {@linkplain ActionProvider} should be + * used as the object to get it's {@linkplain Action}s from. The actions can + * be obtained by the Reasoner using the ActionProvider's interface, and the + * obtained actions can be subsequently used to change anything in the + * system. + *

+ * + *

+ * If there was previously another object set as it's action provider, this + * new object will overwrite it. There can only be one at a time. + *

+ * + * @param ap + * The object to be used from now on in order to get actions from + * + */ + public void setActuationProvider(ActionProvider ap); + + /** + *

+ * Sets the object that will provide this Reasoner with it's observations. + *

+ * + *

+ * By specifying that an {@linkplain ObservationProvider} should be used as + * the object to get it's {@linkplain Observation}s from, means that all the + * input of the Reasoner will have to come from this object. These + * observations can then be obtained by the Reasoner via the appropriate + * functions from the ObservationProvider interface. + *

+ * + *

+ * If there was already another observation provider set, this new object + * will overwrite it. There can always only be one at a time. + *

+ * + * @param op + * The object to be used from now on in order to get input from + * + */ + public void setObservationProvider(ObservationProvider op); + +} \ No newline at end of file diff --git a/src/eu/artemis/demanes/reconfiguration/TriggerPolicy.java b/src/eu/artemis/demanes/reconfiguration/TriggerPolicy.java new file mode 100644 index 0000000..afd5b1a --- /dev/null +++ b/src/eu/artemis/demanes/reconfiguration/TriggerPolicy.java @@ -0,0 +1,106 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.reconfiguration; + +/** + *

+ * A TriggerPolicy defines the temporal behavior of any {@linkplain Triggerable} + * object. When the policy is started it will trigger it's registerd objects at + * a specific time, defined by the implementation. + *

+ * + *

+ * A TriggerPolicy can be started and stopped, and it can be suspended and + * resumed. The specific behavior of these actions may be implementation + * specific, but should adhere to the interface's definitions. + *

+ * + * @see Triggerable + * + * @author DEMANES + * @version 0.1 + * @since 27 nov. 2013 + * + */ +public interface TriggerPolicy { + + /** + *

+ * Add a {@linkplain Triggerable} object to the collection of objects to + * trigger whenever the policy intends to do so. If the object has already + * been registered before, nothing changes. + *

+ * + * @param t + * the object to trigger + */ + public void registerTriggerable(Triggerable t); + + /** + *

+ * Resumes the trigger policy activity if it is suspended. Calling this + * function when the trigger policy is stopped, or started has no effect. + * Resuming may cause immediate firing of the triggerable object. + *

+ */ + public void resume(); + + /** + *

+ * Runs the trigger policy. After this call, the trigger policy will + * determine the conditions and regularity in which the triggerable object + * will be fired. Starting may cause the immediate firing of the triggerable + * object. + *

+ * + *

+ * If start is invoked and the trigger policy is not in stopped state, it + * will have no effect. + *

+ */ + public void start(); + + /** + *

+ * Stops the functioning of the trigger policy. After this method is invoked + * there will be no firing of the triggerable object which was registered. + * Additionally the internal state of the Triggerpolicy (if any) is cleared. + *

+ */ + public void stop(); + + /** + *

+ * Temporarily suspends the firing of the triggerable object. The normal + * functioning of the trigger policy must be resumed by using the resume() + * method. + *

+ */ + public void suspend(); + + /** + *

+ * Remove a {@linkplain Triggerable} object from the collection of objects + * to trigger whenever the policy intends to do so. If the object was not + * registered before, nothing changes + *

+ * + * @param t + * the object that no longer needs to be triggered + */ + public void unregisterTriggerable(Triggerable t); + +} \ No newline at end of file diff --git a/src/eu/artemis/demanes/reconfiguration/Triggerable.java b/src/eu/artemis/demanes/reconfiguration/Triggerable.java new file mode 100644 index 0000000..8fdb163 --- /dev/null +++ b/src/eu/artemis/demanes/reconfiguration/Triggerable.java @@ -0,0 +1,49 @@ +/** + * Copyright 2013-2015 DEMANES. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the LicenseLicensed under the Apache License, Version 2.0. + */ +package eu.artemis.demanes.reconfiguration; + +import eu.artemis.demanes.datatypes.ANES_URN; + +/** + *

+ * An object implementing the Triggerable interface can be triggered in order to + * perform it's actions. It allows for it's accessors to have a method that will + * start the object's main functionality + *

+ * + * @see TriggerPolicy + * + * @author DEMANES + * @version 0.1 + * @since 27 nov. 2013 + * + */ +public interface Triggerable { + + /** + *

+ * The trigger function triggers the object to do it's main purpose. The + * trigger function is merely a generic get an object started. It receives + * no arguments, it can be seen merely as a button that activates the + * Triggerable object. + *

+ */ + public void trigger(); + +// public void trigger(String reason, ANES_URN urn, Object value); + + public void trigger(ANES_URN urn, Object value); +} diff --git a/suite/META-INF/MANIFEST.MF b/suite/META-INF/MANIFEST.MF new file mode 100644 index 0000000..d763803 --- /dev/null +++ b/suite/META-INF/MANIFEST.MF @@ -0,0 +1,13 @@ +Manifest-Version: 1.0 +Ant-Version: Apache Ant 1.9.3 +Created-By: 1.7.0_60-b19 (Oracle Corporation) +MIDlet-Name: PowerScalingSunSPOT +MIDlet-Version: 1.0.0 +MIDlet-Vendor: UNIVERSIDAD POLITECNICA DE MADRID (UPM) +MIDlet-Description: Power Scaling Controller for CMS Pilot in DEMANES + Project +MIDlet-1: PowerScalingSunSPOT, , eu.artemis.demanes.impl.SunSPOT.SunSP + OTPowerController +MicroEdition-Profile: IMP-1.0 +MicroEdition-Configuration: CLDC-1.1 + diff --git a/suite/PowerScalingSunSPOT_1.0.0.jar b/suite/PowerScalingSunSPOT_1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..a59e687ddf1976fca87963f5e553e472c55545b6 GIT binary patch literal 146620 zcmbrlb9^P;mOmWZb~<*)wr$%uv5ihTwmY`fv2EM7ZFTz1)%@n(x%133^PW%D`D?FL zReOE+@=}ln1%m+sf&v19@%<13`cFS-ATS_VQ58WtNjWk4k5M2Xg}*O_0)qZrs{7HG zO#}=CH1>I;eUkmhQdvPcNik7nm9Mg5HgP?ceGEt~}@WZoP8riykSVRTes<0B$6eRjcbw&Ws-~JI++mEE^_oIF<%C$(r9Y;x+Gl#@? zRK>oMkp)K&(3;JOZ(hCz<%=tM%12p}66Z+>ZqzLjhh5Li2wojrSzn7MzS&~ISFuFz z9%KGvOaJTcgMMzQsSEvozX0}c3k)5dO>F>9f3OhspBI{#+8ElJ{t*HGzb7y;bT)MM zu>V6+f`3nH>TYam?+mcB{iDZX{d-z~jlK0BeBGBnpi*|RRaTH!`2%W-KS6D5XJcb$ z`v*+u|0EL^TY$0Q|FjF#e}dVck;KS!*3|J2K9J#0@NzUYwzD+@ zn7cUs^%MVqo5=r#o1L4fqq4D~HNe(f*3K5-Z1+d+%kh7Bf}!#MBpKfS16MmECsRk) z|551Ve}c7(Gr;Ni9{Ee5b zDZt#q$j;FO;ACv)YU=3m2V4dJ^auY}u6DM6Rf8sfz@F#-2YY*yKhoSJ|DN-IcY>h) zYMB}A)rPn~O>Gqj5YT@koByX41m#4P^@UXBL}Wz28e1DWIYlXs$@L1L@%CAvd2fS0 zK&qsb=wj^!B*nDG84#cLMq!V^Q&G*0%D}&;!SZ*ds>gM4i*Yc`n`%5Znzo%?{#nHPvxUF%}eX;~0gODrSKFfW>Eb-pE6

^N*>LF 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�YX*WxDg0c-2|Dy# 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 literal 0 HcmV?d00001 diff --git a/suite/image.suite b/suite/image.suite new file mode 100644 index 0000000000000000000000000000000000000000..81b62fcb3f7fb269dc9b011b34cce9689685df07 GIT binary patch literal 135804 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 NQtc3^*4Bpl{|^ny^fv$i literal 0 HcmV?d00001 diff --git a/suite/image.suite.metadata b/suite/image.suite.metadata new file mode 100644 index 0000000000000000000000000000000000000000..ca81faadddc049fdc880b391fd6017e1715c44f4 GIT binary patch literal 55944 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 b>~nCix2NvVkvhglcMs3y>JIb4ALRZQqkP*m literal 0 HcmV?d00001 diff --git a/suite/image.sym b/suite/image.sym new file mode 100644 index 0000000..ef73e36 --- /dev/null +++ b/suite/image.sym @@ -0,0 +1,210 @@ +NATIVE.com.sun.squawk.NativeUnsafe.setShort.NAME=99 +NATIVE.com.sun.squawk.UWord.fromPrimitive.NAME=27 +NATIVE.com.sun.squawk.VM.getPreviousFP.NAME=132 +NATIVE.com.sun.squawk.VM.addToClassStateCache.NAME=109 +NATIVE.com.sun.squawk.Offset.gt.NAME=46 +NATIVE.com.sun.squawk.NativeUnsafe.setLong.NAME=96 +NATIVE.com.sun.squawk.UWord.ne.NAME=35 +NATIVE.com.sun.squawk.Address.fromPrimitive.NAME=6 +NATIVE.com.sun.squawk.NativeUnsafe.setAddress.NAME=91 +NATIVE.com.sun.squawk.NativeUnsafe.getObject.NAME=82 +NATIVE.com.sun.squawk.Offset.ge.NAME=45 +NATIVE.com.sun.squawk.Address.isZero.NAME=10 +NATIVE.com.sun.squawk.VM.invalidateClassStateCache.NAME=137 +NATIVE.com.sun.squawk.VM.longBitsToDouble.NAME=139 +NATIVE.com.sun.squawk.NativeUnsafe.free.NAME=71 +NATIVE.com.sun.squawk.NativeUnsafe.getLongAtWord.NAME=81 +NATIVE.com.sun.squawk.NativeUnsafe.copyTypes.NAME=67 +NATIVE.com.sun.squawk.ServiceOperation.cioExecute.NAME=152 +NATIVE.com.sun.squawk.Address.or.NAME=15 +NATIVE.com.sun.squawk.NativeUnsafe.getAsUWord.NAME=76 +NATIVE.com.sun.squawk.NativeUnsafe.getUnalignedLong.NAME=87 +NATIVE.com.sun.squawk.VM.floatToIntBits.NAME=123 +NATIVE.com.sun.squawk.VM.math.NAME=140 +NATIVE.com.sun.squawk.Address.roundDown.NAME=16 +NATIVE.com.sun.squawk.NativeUnsafe.getUWord.NAME=85 +NATIVE.com.sun.squawk.NativeUnsafe.cancelTaskExecutor.NAME=65 +NATIVE.com.sun.squawk.UWord.lo.NAME=32 +NATIVE.com.sun.squawk.Offset.toPrimitive.NAME=53 +NATIVE.com.sun.squawk.Offset.eq.NAME=43 +NATIVE.com.sun.squawk.Lisp2Bitmap.getAddressOfBitmapWordFor.NAME=158 +NATIVE.com.sun.squawk.VM.getGlobalAddr.NAME=126 +NATIVE.com.sun.squawk.VM.addressResult.NAME=110 +NATIVE.com.sun.squawk.VM.allocate.NAME=111 +NATIVE.com.sun.squawk.GarbageCollector.hasNativeImplementation.NAME=154 +NATIVE.com.sun.squawk.Address.add.NAME=0 +NATIVE.com.sun.squawk.VM.getMP.NAME=131 +NATIVE.com.sun.squawk.Lisp2Bitmap.iterate.NAME=160 +NATIVE.com.sun.squawk.Address.roundUp.NAME=18 +NATIVE.com.sun.squawk.NativeUnsafe.setArrayTypes.NAME=92 +NATIVE.com.sun.squawk.Address.ne.NAME=14 +NATIVE.com.sun.squawk.VM.setGlobalOop.NAME=146 +NATIVE.com.sun.squawk.VM.executeCOG.NAME=119 +NATIVE.com.sun.squawk.NativeUnsafe.call6.NAME=64 +NATIVE.com.sun.squawk.NativeUnsafe.setByte.NAME=93 +NATIVE.com.sun.squawk.NativeUnsafe.call5.NAME=63 +NATIVE.com.sun.squawk.NativeUnsafe.call4.NAME=62 +NATIVE.com.sun.squawk.Address.max.NAME=13 +NATIVE.com.sun.squawk.NativeUnsafe.call3.NAME=61 +NATIVE.com.sun.squawk.NativeUnsafe.call2.NAME=60 +NATIVE.com.sun.squawk.NativeUnsafe.setUnalignedLong.NAME=103 +NATIVE.com.sun.squawk.NativeUnsafe.call1.NAME=58 +NATIVE.com.sun.squawk.NativeUnsafe.getLong.NAME=80 +NATIVE.com.sun.squawk.VM.callStaticNoParm.NAME=113 +NATIVE.com.sun.squawk.NativeUnsafe.call0.NAME=57 +NATIVE.com.sun.squawk.Address.toUWord.NAME=23 +NATIVE.com.sun.squawk.Lisp2Bitmap.testAndSetBitFor.NAME=163 +NATIVE.com.sun.squawk.Lisp2Bitmap.clearBitFor.NAME=155 +NATIVE.com.sun.squawk.Address.isMax.NAME=9 +NATIVE.com.sun.squawk.VM.getGlobalOopCount.NAME=129 +NATIVE.com.sun.squawk.Offset.toInt.NAME=52 +NATIVE.com.sun.squawk.VM.doubleToLongBits.NAME=117 +NATIVE.ENTRY.COUNT.NAME=166 +NATIVE.com.sun.squawk.NativeUnsafe.getAsShort.NAME=75 +NATIVE.com.sun.squawk.NativeUnsafe.getUnalignedShort.NAME=88 +NATIVE.com.sun.squawk.VM.getGlobalOopTable.NAME=130 +NATIVE.com.sun.squawk.NativeUnsafe.getShort.NAME=83 +NATIVE.com.sun.squawk.Address.loeq.NAME=12 +NATIVE.com.sun.squawk.Address.lo.NAME=11 +NATIVE.com.sun.squawk.VM.serviceResult.NAME=142 +NATIVE.com.sun.squawk.Address.fromObject.NAME=5 +NATIVE.com.sun.squawk.VM.setGlobalInt.NAME=145 +NATIVE.com.sun.squawk.NativeUnsafe.call10.NAME=59 +NATIVE.com.sun.squawk.Address.and.NAME=2 +NATIVE.com.sun.squawk.NativeUnsafe.createTaskExecutor.NAME=68 +NATIVE.com.sun.squawk.GarbageCollector.collectGarbageInC.NAME=153 +NATIVE.com.sun.squawk.VM.setPreviousIP.NAME=148 +NATIVE.com.sun.squawk.UWord.toPrimitive.NAME=39 +NATIVE.com.sun.squawk.Offset.fromPrimitive.NAME=44 +NATIVE.com.sun.squawk.NativeUnsafe.getAsByte.NAME=73 +NATIVE.com.sun.squawk.Offset.zero.NAME=56 +NATIVE.com.sun.squawk.Address.zero.NAME=24 +NATIVE.com.sun.squawk.NativeUnsafe.getUnalignedInt.NAME=86 +NATIVE.com.sun.squawk.VM.lcmp.NAME=165 +NATIVE.com.sun.squawk.UWord.max.NAME=34 +NATIVE.com.sun.squawk.Address.toObject.NAME=22 +NATIVE.com.sun.squawk.Offset.add.NAME=41 +NATIVE.com.sun.squawk.VM.hasVirtualMonitorObject.NAME=134 +NATIVE.com.sun.squawk.Offset.ne.NAME=50 +NATIVE.com.sun.squawk.NativeUnsafe.deleteTaskExecutor.NAME=70 +NATIVE.com.sun.squawk.Lisp2Bitmap.initialize.NAME=159 +NATIVE.com.sun.squawk.NativeUnsafe.getAsInt.NAME=74 +NATIVE.com.sun.squawk.NativeUnsafe.charAt.NAME=66 +NATIVE.com.sun.squawk.UWord.hi.NAME=28 +NATIVE.com.sun.squawk.NativeUnsafe.setType.NAME=100 +NATIVE.com.sun.squawk.VM.hashcode.NAME=135 +NATIVE.com.sun.squawk.VM.deadbeef.NAME=116 +NATIVE.com.sun.squawk.VM.getGlobalOop.NAME=128 +NATIVE.com.sun.squawk.NativeUnsafe.setUnalignedInt.NAME=102 +NATIVE.com.sun.squawk.UWord.isMax.NAME=30 +NATIVE.com.sun.squawk.NativeUnsafe.setUnalignedShort.NAME=104 +NATIVE.com.sun.squawk.NativeUnsafe.getByte.NAME=77 +NATIVE.com.sun.squawk.Address.hieq.NAME=8 +NATIVE.com.sun.squawk.UWord.toInt.NAME=37 +NATIVE.com.sun.squawk.UWord.and.NAME=25 +NATIVE.com.sun.squawk.Address.roundUpToWord.NAME=19 +NATIVE.com.sun.squawk.VM.executeGC.NAME=120 +NATIVE.com.sun.squawk.UWord.loeq.NAME=33 +NATIVE.com.sun.squawk.VM.getBranchCount.NAME=124 +NATIVE.com.sun.squawk.Lisp2Bitmap.setBitFor.NAME=161 +NATIVE.com.sun.squawk.Lisp2Bitmap.clearBitsFor.NAME=156 +NATIVE.com.sun.squawk.Offset.lt.NAME=49 +NATIVE.com.sun.squawk.Address.diff.NAME=3 +NATIVE.com.sun.squawk.Offset.le.NAME=48 +NATIVE.com.sun.squawk.VM.getGlobalInt.NAME=127 +NATIVE.com.sun.squawk.VM.setPreviousFP.NAME=147 +NATIVE.com.sun.squawk.NativeUnsafe.setChar.NAME=94 +NATIVE.com.sun.squawk.NativeUnsafe.swap.NAME=105 +NATIVE.com.sun.squawk.UWord.zero.NAME=40 +NATIVE.com.sun.squawk.Address.sub.NAME=20 +NATIVE.com.sun.squawk.VM.removeVirtualMonitorObject.NAME=141 +NATIVE.com.sun.squawk.VM.finalize.NAME=122 +NATIVE.com.sun.squawk.Lisp2Bitmap.testBitFor.NAME=164 +NATIVE.com.sun.squawk.NativeUnsafe.setLongAtWord.NAME=97 +NATIVE.com.sun.squawk.Offset.wordsToBytes.NAME=55 +NATIVE.com.sun.squawk.Offset.bytesToWords.NAME=42 +NATIVE.com.sun.squawk.Address.hi.NAME=7 +NATIVE.com.sun.squawk.VM.executeCIO.NAME=118 +NATIVE.com.sun.squawk.VM.getPreviousIP.NAME=133 +NATIVE.com.sun.squawk.UWord.eq.NAME=26 +NATIVE.com.sun.squawk.UWord.isZero.NAME=31 +NATIVE.com.sun.squawk.NativeUnsafe.getInt.NAME=79 +NATIVE.com.sun.squawk.VM.zeroWords.NAME=150 +NATIVE.com.sun.squawk.VM.intBitsToFloat.NAME=136 +NATIVE.com.sun.squawk.NativeUnsafe.setUWord.NAME=101 +NATIVE.com.sun.squawk.UWord.hieq.NAME=29 +NATIVE.com.sun.squawk.NativeUnsafe.getType.NAME=84 +NATIVE.com.sun.squawk.VM.getFP.NAME=125 +NATIVE.com.sun.squawk.NativeUnsafe.runBlockingFunctionOn.NAME=90 +NATIVE.com.sun.squawk.VM.isBigEndian.NAME=138 +NATIVE.com.sun.squawk.VM.fatalVMError.NAME=121 +NATIVE.com.sun.squawk.NativeUnsafe.swap8.NAME=108 +NATIVE.com.sun.squawk.NativeUnsafe.swap4.NAME=107 +NATIVE.com.sun.squawk.NativeUnsafe.malloc.NAME=89 +NATIVE.com.sun.squawk.Lisp2Bitmap.setBitsFor.NAME=162 +NATIVE.com.sun.squawk.NativeUnsafe.swap2.NAME=106 +NATIVE.com.sun.squawk.VM.threadSwitch.NAME=149 +NATIVE.com.sun.squawk.VM.callStaticOneParm.NAME=114 +NATIVE.com.sun.squawk.Lisp2Bitmap.getAddressForBitmapWord.NAME=157 +NATIVE.com.sun.squawk.Offset.toUWord.NAME=54 +NATIVE.com.sun.squawk.NativeUnsafe.setInt.NAME=95 +NATIVE.com.sun.squawk.UWord.toOffset.NAME=38 +NATIVE.com.sun.squawk.VM.copyBytes.NAME=115 +NATIVE.com.sun.squawk.VM.setBytes.NAME=143 +NATIVE.com.sun.squawk.NativeUnsafe.getAddress.NAME=72 +NATIVE.com.sun.squawk.VM.setGlobalAddr.NAME=144 +NATIVE.com.sun.squawk.CheneyCollector.memoryProtect.NAME=151 +NATIVE.com.sun.squawk.Offset.isZero.NAME=47 +NATIVE.com.sun.squawk.VM.asKlass.NAME=112 +NATIVE.com.sun.squawk.UWord.or.NAME=36 +NATIVE.com.sun.squawk.Address.addOffset.NAME=1 +NATIVE.com.sun.squawk.Address.subOffset.NAME=21 +NATIVE.com.sun.squawk.NativeUnsafe.deleteNativeTask.NAME=69 +NATIVE.com.sun.squawk.Address.roundDownToWord.NAME=17 +NATIVE.com.sun.squawk.NativeUnsafe.getChar.NAME=78 +NATIVE.com.sun.squawk.Address.eq.NAME=4 +NATIVE.com.sun.squawk.NativeUnsafe.setObject.NAME=98 +NATIVE.com.sun.squawk.Offset.sub.NAME=51 +PMR.ROM_SIZE=131640 +PMR.ROM_SUITE_TABLE=1026248 +PMR.REVERSE_PARAMETERS=1 +ROM.GLOBAL.INT.COUNT=29 +ROM.GLOBAL.INT.0=com.sun.squawk.VM.extendsEnabled +ROM.GLOBAL.INT.6=com.sun.squawk.GC.newCount +ROM.GLOBAL.INT.26=com.sun.squawk.VM.tracing +ROM.GLOBAL.INT.23=traceStartLow +ROM.GLOBAL.INT.27=runningOnServiceThread +ROM.GLOBAL.INT.11=com.sun.squawk.ServiceOperation.op +ROM.GLOBAL.INT.5=com.sun.squawk.GC.monitorReleaseCount +ROM.GLOBAL.INT.1=com.sun.squawk.VM.usingTypeMap +ROM.GLOBAL.INT.2=com.sun.squawk.GC.traceFlags +ROM.GLOBAL.INT.24=traceEndHigh +ROM.GLOBAL.INT.21=branchCountLow +ROM.GLOBAL.INT.18=com.sun.squawk.ServiceOperation.i6 +ROM.GLOBAL.INT.22=traceStartHigh +ROM.GLOBAL.INT.17=com.sun.squawk.ServiceOperation.i5 +ROM.GLOBAL.INT.16=com.sun.squawk.ServiceOperation.i4 +ROM.GLOBAL.INT.15=com.sun.squawk.ServiceOperation.i3 +ROM.GLOBAL.INT.14=com.sun.squawk.ServiceOperation.i2 +ROM.GLOBAL.INT.13=com.sun.squawk.ServiceOperation.i1 +ROM.GLOBAL.INT.9=com.sun.squawk.ServiceOperation.code +ROM.GLOBAL.INT.28=currentThreadID +ROM.GLOBAL.INT.25=traceEndLow +ROM.GLOBAL.INT.7=com.sun.squawk.GC.newHits +ROM.GLOBAL.INT.12=com.sun.squawk.ServiceOperation.channel +ROM.GLOBAL.INT.8=com.sun.squawk.VMThread.nextThreadNumber +ROM.GLOBAL.INT.10=com.sun.squawk.ServiceOperation.context +ROM.GLOBAL.INT.20=branchCountHigh +ROM.GLOBAL.INT.19=com.sun.squawk.ServiceOperation.result +ROM.GLOBAL.INT.3=com.sun.squawk.GC.collecting +ROM.GLOBAL.INT.4=com.sun.squawk.GC.monitorExitCount +ROM.GLOBAL.ADDR.COUNT=3 +ROM.GLOBAL.ADDR.1=com.sun.squawk.ServiceOperation.o2 +ROM.GLOBAL.ADDR.0=com.sun.squawk.ServiceOperation.o1 +ROM.GLOBAL.ADDR.2=com.sun.squawk.ServiceOperation.addressResult +ROM.GLOBAL.OOP.COUNT=5 +ROM.GLOBAL.OOP.1=com.sun.squawk.VMThread.currentThread +ROM.GLOBAL.OOP.3=com.sun.squawk.VMThread.serviceThread +ROM.GLOBAL.OOP.2=com.sun.squawk.VMThread.otherThread +ROM.GLOBAL.OOP.0=com.sun.squawk.VM.currentIsolate +ROM.GLOBAL.OOP.4=com.sun.squawk.ServiceOperation.pendingException