File: ArServerModeDrive.h

package info (click to toggle)
libaria 2.8.0%2Brepack-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 13,628 kB
  • ctags: 16,574
  • sloc: cpp: 135,490; makefile: 925; python: 597; java: 570; ansic: 182
file content (56 lines) | stat: -rw-r--r-- 2,063 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#ifndef ARSERVERMODEDRIVE_H
#define ARSERVERMODEDRIVE_H

#include "ariaTypedefs.h"
#include "Aria.h"
#include "ArNetworking.h"
#include "ArServerMode.h"

class ArServerModeDrive : public ArServerMode
{
public:
  AREXPORT ArServerModeDrive(ArServerBase *server, ArRobot *robot,
			     bool takeControlOnJoystick = false);
  AREXPORT virtual ~ArServerModeDrive();
  AREXPORT virtual void activate(void);
  AREXPORT virtual void deactivate(void);
  /// This adds commands that'll let you disable and enable safe driving
  AREXPORT void addControlCommands(ArServerHandlerCommands *handlerCommands);
  AREXPORT void driveJoystick(double vel, 
                              double rotVel, 
                              bool isActivating = true);
  AREXPORT void serverDriveJoystick(ArServerClient *client,
				    ArNetPacket *packet);
  AREXPORT virtual void userTask(void);
  AREXPORT void setThrottleParams(int lowSpeed, int highSpeed);
  AREXPORT virtual ArActionGroup *getActionGroup(void) { return &myDriveGroup;}
  AREXPORT void setSafeDriving(bool safe);
  AREXPORT bool getSafeDriving(void);
  /// this action will be activated in unsafe mode
  AREXPORT void setExtraUnsafeAction(ArAction *action) 
    { myExtraUnsafeAction = action; }
protected:
  AREXPORT void serverSafeDrivingEnable(void);
  AREXPORT void serverSafeDrivingDisable(void);
  AREXPORT void joyUserTask(void);
  ArAction *myExtraUnsafeAction;
  ArJoyHandler *myJoyHandler;
  ArActionJoydrive myJoydriveAction;
  ArActionInput *myInputAction;
  ArActionStop myStopAction;
  ArActionGroupInput myDriveGroup;
  ArFunctor2C<ArServerModeDrive, ArServerClient *, ArNetPacket *> myServerDriveJoystickCB;
  ArFunctorC<ArServerModeDrive> myJoyUserTaskCB;
  bool myDriveSafely;
  bool myNewDriveSafely;
  double myVel;
  double myRotVel;
  bool myTakeControlOnJoystick;
  // for the simple commands
  ArServerHandlerCommands *myHandlerCommands;
  ArFunctorC<ArServerModeDrive> myServerSafeDrivingEnableCB;
  ArFunctorC<ArServerModeDrive> myServerSafeDrivingDisableCB;
};


#endif // ARNETMODEDRIVE_H