Telescope Control Library

Dependents:   PushToGo-F429

Committer:
caoyuan9642
Date:
Mon Aug 27 23:24:00 2018 +0000
Revision:
4:b8ad57bbf9e1
Parent:
0:6cb2eaf8b133
Child:
10:e356188d208e
Fixed bugs and added polar alignment functions

Who changed what in which revision?

UserRevisionLine numberNew contents of line
caoyuan9642 0:6cb2eaf8b133 1 /*
caoyuan9642 0:6cb2eaf8b133 2 * EqMountServer.h
caoyuan9642 0:6cb2eaf8b133 3 *
caoyuan9642 4:b8ad57bbf9e1 4 * Created on: 2018��3��1��
caoyuan9642 0:6cb2eaf8b133 5 * Author: caoyuan9642
caoyuan9642 0:6cb2eaf8b133 6 */
caoyuan9642 0:6cb2eaf8b133 7
caoyuan9642 0:6cb2eaf8b133 8 #ifndef EQMOUNTSERVER_H_
caoyuan9642 0:6cb2eaf8b133 9 #define EQMOUNTSERVER_H_
caoyuan9642 0:6cb2eaf8b133 10
caoyuan9642 0:6cb2eaf8b133 11 class EqMountServer;
caoyuan9642 0:6cb2eaf8b133 12
caoyuan9642 0:6cb2eaf8b133 13 #include "MountServer.h"
caoyuan9642 0:6cb2eaf8b133 14 #include "EquatorialMount.h"
caoyuan9642 0:6cb2eaf8b133 15
caoyuan9642 4:b8ad57bbf9e1 16 /** Command structure for the mount server
caoyuan9642 4:b8ad57bbf9e1 17 */
caoyuan9642 0:6cb2eaf8b133 18 struct ServerCommand
caoyuan9642 0:6cb2eaf8b133 19 {
caoyuan9642 0:6cb2eaf8b133 20 const char *cmd; /// Name of the command
caoyuan9642 0:6cb2eaf8b133 21 const char *desc; /// Description of the command
caoyuan9642 0:6cb2eaf8b133 22 int (*fptr)(EqMountServer *, const char *, int, char **); /// Function pointer to the command
caoyuan9642 0:6cb2eaf8b133 23 ServerCommand(const char *n = "", const char *d = "",
caoyuan9642 0:6cb2eaf8b133 24 int (*fp)(EqMountServer *, const char *, int, char **) = NULL) :
caoyuan9642 0:6cb2eaf8b133 25 cmd(n), desc(d), fptr(fp)
caoyuan9642 0:6cb2eaf8b133 26 {
caoyuan9642 0:6cb2eaf8b133 27 }
caoyuan9642 0:6cb2eaf8b133 28 };
caoyuan9642 0:6cb2eaf8b133 29
caoyuan9642 0:6cb2eaf8b133 30 #define MAX_COMMAND 128
caoyuan9642 0:6cb2eaf8b133 31
caoyuan9642 0:6cb2eaf8b133 32 #define ERR_WRONG_NUM_PARAM 1
caoyuan9642 0:6cb2eaf8b133 33 #define ERR_PARAM_OUT_OF_RANGE 2
caoyuan9642 0:6cb2eaf8b133 34
caoyuan9642 4:b8ad57bbf9e1 35 /** EqMount server class. Receives commands from a stream and execute on the binded EqMount.
caoyuan9642 4:b8ad57bbf9e1 36 */
caoyuan9642 0:6cb2eaf8b133 37 class EqMountServer: public MountServer
caoyuan9642 0:6cb2eaf8b133 38 {
caoyuan9642 0:6cb2eaf8b133 39 protected:
caoyuan9642 0:6cb2eaf8b133 40
caoyuan9642 4:b8ad57bbf9e1 41 EquatorialMount *eq_mount; /// EqMount to be binded
caoyuan9642 4:b8ad57bbf9e1 42 FileHandle &stream; /// Input stream
caoyuan9642 0:6cb2eaf8b133 43 Thread thread;bool echo; /// Echo
caoyuan9642 0:6cb2eaf8b133 44
caoyuan9642 4:b8ad57bbf9e1 45 void task_thread(); /// Main task entrance
caoyuan9642 4:b8ad57bbf9e1 46 void command_execute(ServerCommand &, int argn, char *argv[], char *buffer); /// To execute a server command
caoyuan9642 0:6cb2eaf8b133 47
caoyuan9642 0:6cb2eaf8b133 48 public:
caoyuan9642 4:b8ad57bbf9e1 49 /** Creates a server with input stream and optionally echoing to the stream.
caoyuan9642 4:b8ad57bbf9e1 50 */
caoyuan9642 0:6cb2eaf8b133 51 EqMountServer(FileHandle &stream, bool echo = false);
caoyuan9642 0:6cb2eaf8b133 52 virtual ~EqMountServer();
caoyuan9642 0:6cb2eaf8b133 53
caoyuan9642 4:b8ad57bbf9e1 54 /** Bind to a EqMount. Commands will be ignored if no mount is binded.
caoyuan9642 4:b8ad57bbf9e1 55 */
caoyuan9642 0:6cb2eaf8b133 56 void bind(EquatorialMount &eq)
caoyuan9642 0:6cb2eaf8b133 57 {
caoyuan9642 0:6cb2eaf8b133 58 eq_mount = &eq;
caoyuan9642 0:6cb2eaf8b133 59 }
caoyuan9642 0:6cb2eaf8b133 60
caoyuan9642 4:b8ad57bbf9e1 61 /** @return binded EqMount
caoyuan9642 4:b8ad57bbf9e1 62 */
caoyuan9642 0:6cb2eaf8b133 63 EquatorialMount* getEqMount() const
caoyuan9642 0:6cb2eaf8b133 64 {
caoyuan9642 0:6cb2eaf8b133 65 return eq_mount;
caoyuan9642 0:6cb2eaf8b133 66 }
caoyuan9642 0:6cb2eaf8b133 67
caoyuan9642 4:b8ad57bbf9e1 68 /** @return associated stream
caoyuan9642 4:b8ad57bbf9e1 69 */
caoyuan9642 0:6cb2eaf8b133 70 FileHandle& getStream() const
caoyuan9642 0:6cb2eaf8b133 71 {
caoyuan9642 0:6cb2eaf8b133 72 return stream;
caoyuan9642 0:6cb2eaf8b133 73 }
caoyuan9642 0:6cb2eaf8b133 74
caoyuan9642 4:b8ad57bbf9e1 75 /** Add a command to the available commands. Must have unique names.
caoyuan9642 4:b8ad57bbf9e1 76 */
caoyuan9642 0:6cb2eaf8b133 77 static void addCommand(const ServerCommand &cmd);
caoyuan9642 0:6cb2eaf8b133 78 };
caoyuan9642 0:6cb2eaf8b133 79
caoyuan9642 0:6cb2eaf8b133 80 /**
caoyuan9642 0:6cb2eaf8b133 81 * Print to stream
caoyuan9642 0:6cb2eaf8b133 82 */
caoyuan9642 0:6cb2eaf8b133 83 void stprintf(FileHandle &f, const char *fmt, ...);
caoyuan9642 0:6cb2eaf8b133 84
caoyuan9642 0:6cb2eaf8b133 85 #endif /* EQMOUNTSERVER_H_ */
caoyuan9642 0:6cb2eaf8b133 86