Telescope Control Library
TelescopeConfiguration.h@10:e356188d208e, 2018-09-14 (annotated)
- Committer:
- caoyu@caoyuan9642-desktop.MIT.EDU
- Date:
- Fri Sep 14 01:30:55 2018 -0400
- Revision:
- 10:e356188d208e
- Parent:
- 0:6cb2eaf8b133
Resolved circular dependency. Slewing rate now only applies to indefinite slews. GOTO use goto_slew_speed in the configuration.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
caoyuan9642 | 0:6cb2eaf8b133 | 1 | /* |
caoyuan9642 | 0:6cb2eaf8b133 | 2 | * TelescopeConfiguration.h |
caoyuan9642 | 0:6cb2eaf8b133 | 3 | * |
caoyuan9642 | 0:6cb2eaf8b133 | 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 PUSHTOGO_TELESCOPECONFIGURATION_H_ |
caoyuan9642 | 0:6cb2eaf8b133 | 9 | #define PUSHTOGO_TELESCOPECONFIGURATION_H_ |
caoyuan9642 | 0:6cb2eaf8b133 | 10 | |
caoyuan9642 | 0:6cb2eaf8b133 | 11 | #include <stdio.h> |
caoyuan9642 | 0:6cb2eaf8b133 | 12 | #include <string.h> |
caoyuan9642 | 0:6cb2eaf8b133 | 13 | #include "CelestialMath.h" |
caoyuan9642 | 0:6cb2eaf8b133 | 14 | #include "EqMountServer.h" |
caoyuan9642 | 0:6cb2eaf8b133 | 15 | |
caoyuan9642 | 0:6cb2eaf8b133 | 16 | typedef enum |
caoyuan9642 | 0:6cb2eaf8b133 | 17 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 18 | DATATYPE_INT, DATATYPE_DOUBLE, DATATYPE_STRING, DATATYPE_BOOL |
caoyuan9642 | 0:6cb2eaf8b133 | 19 | } DataType; |
caoyuan9642 | 0:6cb2eaf8b133 | 20 | |
caoyuan9642 | 0:6cb2eaf8b133 | 21 | typedef union |
caoyuan9642 | 0:6cb2eaf8b133 | 22 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 23 | int idata; |
caoyuan9642 | 0:6cb2eaf8b133 | 24 | double ddata;bool bdata; |
caoyuan9642 | 0:6cb2eaf8b133 | 25 | char strdata[32]; |
caoyuan9642 | 0:6cb2eaf8b133 | 26 | } DataValue; |
caoyuan9642 | 0:6cb2eaf8b133 | 27 | |
caoyuan9642 | 0:6cb2eaf8b133 | 28 | struct ConfigItem |
caoyuan9642 | 0:6cb2eaf8b133 | 29 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 30 | char *config; |
caoyuan9642 | 0:6cb2eaf8b133 | 31 | char *name; |
caoyuan9642 | 0:6cb2eaf8b133 | 32 | const char *help; |
caoyuan9642 | 0:6cb2eaf8b133 | 33 | DataType type; |
caoyuan9642 | 0:6cb2eaf8b133 | 34 | DataValue value; |
caoyuan9642 | 0:6cb2eaf8b133 | 35 | DataValue min; |
caoyuan9642 | 0:6cb2eaf8b133 | 36 | DataValue max;bool extra; |
caoyuan9642 | 0:6cb2eaf8b133 | 37 | }; |
caoyuan9642 | 0:6cb2eaf8b133 | 38 | |
caoyu@caoyuan9642-desktop.MIT.EDU | 10:e356188d208e | 39 | class EqMountServer; |
caoyu@caoyuan9642-desktop.MIT.EDU | 10:e356188d208e | 40 | |
caoyu@caoyuan9642-desktop.MIT.EDU | 10:e356188d208e | 41 | /** |
caoyu@caoyuan9642-desktop.MIT.EDU | 10:e356188d208e | 42 | * Global telescope configuration storage class |
caoyu@caoyuan9642-desktop.MIT.EDU | 10:e356188d208e | 43 | */ |
caoyuan9642 | 0:6cb2eaf8b133 | 44 | class TelescopeConfiguration |
caoyuan9642 | 0:6cb2eaf8b133 | 45 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 46 | public: |
caoyuan9642 | 0:6cb2eaf8b133 | 47 | static void readFromFile(FILE *fp); |
caoyuan9642 | 0:6cb2eaf8b133 | 48 | static void writeToFile(FILE *fp); |
caoyuan9642 | 0:6cb2eaf8b133 | 49 | |
caoyuan9642 | 0:6cb2eaf8b133 | 50 | static int getInt(const char *name) |
caoyuan9642 | 0:6cb2eaf8b133 | 51 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 52 | return getIntFromConfig(getInstance().getConfigItemCheck(name)); |
caoyuan9642 | 0:6cb2eaf8b133 | 53 | } |
caoyuan9642 | 0:6cb2eaf8b133 | 54 | static double getDouble(const char *name) |
caoyuan9642 | 0:6cb2eaf8b133 | 55 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 56 | return getDoubleFromConfig(getInstance().getConfigItemCheck(name)); |
caoyuan9642 | 0:6cb2eaf8b133 | 57 | } |
caoyuan9642 | 0:6cb2eaf8b133 | 58 | static bool getBool(const char *name) |
caoyuan9642 | 0:6cb2eaf8b133 | 59 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 60 | return getBoolFromConfig(getInstance().getConfigItemCheck(name)); |
caoyuan9642 | 0:6cb2eaf8b133 | 61 | } |
caoyuan9642 | 0:6cb2eaf8b133 | 62 | static char *getString(const char *name, char buf[], int len) |
caoyuan9642 | 0:6cb2eaf8b133 | 63 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 64 | return getStringFromConfig(getInstance().getConfigItemCheck(name), buf, |
caoyuan9642 | 0:6cb2eaf8b133 | 65 | len); |
caoyuan9642 | 0:6cb2eaf8b133 | 66 | } |
caoyuan9642 | 0:6cb2eaf8b133 | 67 | |
caoyuan9642 | 0:6cb2eaf8b133 | 68 | private: |
caoyuan9642 | 0:6cb2eaf8b133 | 69 | TelescopeConfiguration(); |
caoyuan9642 | 0:6cb2eaf8b133 | 70 | ~TelescopeConfiguration(); |
caoyuan9642 | 0:6cb2eaf8b133 | 71 | |
caoyuan9642 | 0:6cb2eaf8b133 | 72 | static TelescopeConfiguration instance; |
caoyuan9642 | 0:6cb2eaf8b133 | 73 | |
caoyuan9642 | 0:6cb2eaf8b133 | 74 | struct ConfigNode |
caoyuan9642 | 0:6cb2eaf8b133 | 75 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 76 | ConfigItem *config; |
caoyuan9642 | 0:6cb2eaf8b133 | 77 | const ConfigItem *default_config; |
caoyuan9642 | 0:6cb2eaf8b133 | 78 | ConfigNode *next; |
caoyuan9642 | 0:6cb2eaf8b133 | 79 | }*head; |
caoyuan9642 | 0:6cb2eaf8b133 | 80 | |
caoyuan9642 | 0:6cb2eaf8b133 | 81 | static TelescopeConfiguration &getInstance() |
caoyuan9642 | 0:6cb2eaf8b133 | 82 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 83 | return instance; |
caoyuan9642 | 0:6cb2eaf8b133 | 84 | } |
caoyuan9642 | 0:6cb2eaf8b133 | 85 | |
caoyuan9642 | 0:6cb2eaf8b133 | 86 | ConfigItem *getConfigItem(const char *name); |
caoyuan9642 | 0:6cb2eaf8b133 | 87 | ConfigItem *getConfigItemCheck(const char *name); |
caoyuan9642 | 0:6cb2eaf8b133 | 88 | |
caoyuan9642 | 0:6cb2eaf8b133 | 89 | void setConfig(const char *name, char *value); |
caoyuan9642 | 0:6cb2eaf8b133 | 90 | |
caoyuan9642 | 0:6cb2eaf8b133 | 91 | static int getIntFromConfig(ConfigItem *); |
caoyuan9642 | 0:6cb2eaf8b133 | 92 | static double getDoubleFromConfig(ConfigItem *); |
caoyuan9642 | 0:6cb2eaf8b133 | 93 | static bool getBoolFromConfig(ConfigItem *); |
caoyuan9642 | 0:6cb2eaf8b133 | 94 | static char *getStringFromConfig(ConfigItem *, char buf[], int len); |
caoyuan9642 | 0:6cb2eaf8b133 | 95 | |
caoyuan9642 | 0:6cb2eaf8b133 | 96 | static bool setIntToConfig(ConfigItem *, int value); |
caoyuan9642 | 0:6cb2eaf8b133 | 97 | static bool setDoubleToConfig(ConfigItem *, double value); |
caoyuan9642 | 0:6cb2eaf8b133 | 98 | static bool setBoolToConfig(ConfigItem *, bool value); |
caoyuan9642 | 0:6cb2eaf8b133 | 99 | static bool setStringToConfig(ConfigItem *, char *value); |
caoyuan9642 | 0:6cb2eaf8b133 | 100 | |
caoyuan9642 | 0:6cb2eaf8b133 | 101 | static int eqmount_config(EqMountServer *server, const char *cmd, int argn, |
caoyuan9642 | 0:6cb2eaf8b133 | 102 | char *argv[]); |
caoyuan9642 | 0:6cb2eaf8b133 | 103 | }; |
caoyuan9642 | 0:6cb2eaf8b133 | 104 | |
caoyuan9642 | 0:6cb2eaf8b133 | 105 | #endif /* PUSHTOGO_TELESCOPECONFIGURATION_H_ */ |
caoyuan9642 | 0:6cb2eaf8b133 | 106 |