00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "Aria.h"
00027 #include "ArExport.h"
00028 #include "ArServerModeWander.h"
00029
00030 AREXPORT ArServerModeWander::ArServerModeWander(ArServerBase *server, ArRobot *robot) :
00031 ArServerMode(robot, server, "wander"),
00032 myWanderGroup(robot),
00033 myNetWanderCB(this, &ArServerModeWander::netWander)
00034 {
00035 myMode = "Wander";
00036 if (myServer != NULL)
00037 {
00038 addModeData("wander", "makes the robot wander", &myNetWanderCB,
00039 "none", "none", "Movement", "RETURN_NONE");
00040 }
00041 }
00042
00043 AREXPORT ArServerModeWander::~ArServerModeWander()
00044 {
00045
00046 }
00047
00048 AREXPORT void ArServerModeWander::activate(void)
00049 {
00050 if (!baseActivate())
00051 return;
00052
00053 setActivityTimeToNow();
00054 myRobot->clearDirectMotion();
00055 myWanderGroup.activateExclusive();
00056 myStatus = "Wandering";
00057 }
00058
00059 AREXPORT void ArServerModeWander::deactivate(void)
00060 {
00061 myWanderGroup.deactivate();
00062 baseDeactivate();
00063 }
00064
00065 AREXPORT void ArServerModeWander::wander(void)
00066 {
00067 activate();
00068 }
00069
00070 AREXPORT void ArServerModeWander::netWander(ArServerClient *client,
00071 ArNetPacket *packet)
00072 {
00073 myRobot->lock();
00074 ArLog::log(ArLog::Verbose, "Wandering");
00075 wander();
00076 myRobot->unlock();
00077 setActivityTimeToNow();
00078 }
00079
00080 AREXPORT void ArServerModeWander::userTask(void)
00081 {
00082 setActivityTimeToNow();
00083
00084
00085
00086 myRobot->forceTryingToMove();
00087
00088
00089 }