Telescope Control Library
TelescopeConfiguration.h@0:6cb2eaf8b133, 2018-08-19 (annotated)
- Committer:
- caoyuan9642
- Date:
- Sun Aug 19 05:21:20 2018 +0000
- Revision:
- 0:6cb2eaf8b133
- Child:
- 10:e356188d208e
v0.1
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 | |
caoyuan9642 | 0:6cb2eaf8b133 | 14 | class TelescopeConfiguration; |
caoyuan9642 | 0:6cb2eaf8b133 | 15 | |
caoyuan9642 | 0:6cb2eaf8b133 | 16 | #include "CelestialMath.h" |
caoyuan9642 | 0:6cb2eaf8b133 | 17 | #include "EqMountServer.h" |
caoyuan9642 | 0:6cb2eaf8b133 | 18 | |
caoyuan9642 | 0:6cb2eaf8b133 | 19 | typedef enum |
caoyuan9642 | 0:6cb2eaf8b133 | 20 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 21 | DATATYPE_INT, DATATYPE_DOUBLE, DATATYPE_STRING, DATATYPE_BOOL |
caoyuan9642 | 0:6cb2eaf8b133 | 22 | } DataType; |
caoyuan9642 | 0:6cb2eaf8b133 | 23 | |
caoyuan9642 | 0:6cb2eaf8b133 | 24 | typedef union |
caoyuan9642 | 0:6cb2eaf8b133 | 25 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 26 | int idata; |
caoyuan9642 | 0:6cb2eaf8b133 | 27 | double ddata;bool bdata; |
caoyuan9642 | 0:6cb2eaf8b133 | 28 | char strdata[32]; |
caoyuan9642 | 0:6cb2eaf8b133 | 29 | } DataValue; |
caoyuan9642 | 0:6cb2eaf8b133 | 30 | |
caoyuan9642 | 0:6cb2eaf8b133 | 31 | struct ConfigItem |
caoyuan9642 | 0:6cb2eaf8b133 | 32 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 33 | char *config; |
caoyuan9642 | 0:6cb2eaf8b133 | 34 | char *name; |
caoyuan9642 | 0:6cb2eaf8b133 | 35 | const char *help; |
caoyuan9642 | 0:6cb2eaf8b133 | 36 | DataType type; |
caoyuan9642 | 0:6cb2eaf8b133 | 37 | DataValue value; |
caoyuan9642 | 0:6cb2eaf8b133 | 38 | DataValue min; |
caoyuan9642 | 0:6cb2eaf8b133 | 39 | DataValue max;bool extra; |
caoyuan9642 | 0:6cb2eaf8b133 | 40 | }; |
caoyuan9642 | 0:6cb2eaf8b133 | 41 | |
caoyuan9642 | 0:6cb2eaf8b133 | 42 | class TelescopeConfiguration |
caoyuan9642 | 0:6cb2eaf8b133 | 43 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 44 | public: |
caoyuan9642 | 0:6cb2eaf8b133 | 45 | static void readFromFile(FILE *fp); |
caoyuan9642 | 0:6cb2eaf8b133 | 46 | static void writeToFile(FILE *fp); |
caoyuan9642 | 0:6cb2eaf8b133 | 47 | |
caoyuan9642 | 0:6cb2eaf8b133 | 48 | static int getInt(const char *name) |
caoyuan9642 | 0:6cb2eaf8b133 | 49 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 50 | return getIntFromConfig(getInstance().getConfigItemCheck(name)); |
caoyuan9642 | 0:6cb2eaf8b133 | 51 | } |
caoyuan9642 | 0:6cb2eaf8b133 | 52 | static double getDouble(const char *name) |
caoyuan9642 | 0:6cb2eaf8b133 | 53 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 54 | return getDoubleFromConfig(getInstance().getConfigItemCheck(name)); |
caoyuan9642 | 0:6cb2eaf8b133 | 55 | } |
caoyuan9642 | 0:6cb2eaf8b133 | 56 | static bool getBool(const char *name) |
caoyuan9642 | 0:6cb2eaf8b133 | 57 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 58 | return getBoolFromConfig(getInstance().getConfigItemCheck(name)); |
caoyuan9642 | 0:6cb2eaf8b133 | 59 | } |
caoyuan9642 | 0:6cb2eaf8b133 | 60 | static char *getString(const char *name, char buf[], int len) |
caoyuan9642 | 0:6cb2eaf8b133 | 61 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 62 | return getStringFromConfig(getInstance().getConfigItemCheck(name), buf, |
caoyuan9642 | 0:6cb2eaf8b133 | 63 | len); |
caoyuan9642 | 0:6cb2eaf8b133 | 64 | } |
caoyuan9642 | 0:6cb2eaf8b133 | 65 | |
caoyuan9642 | 0:6cb2eaf8b133 | 66 | private: |
caoyuan9642 | 0:6cb2eaf8b133 | 67 | TelescopeConfiguration(); |
caoyuan9642 | 0:6cb2eaf8b133 | 68 | ~TelescopeConfiguration(); |
caoyuan9642 | 0:6cb2eaf8b133 | 69 | |
caoyuan9642 | 0:6cb2eaf8b133 | 70 | static TelescopeConfiguration instance; |
caoyuan9642 | 0:6cb2eaf8b133 | 71 | |
caoyuan9642 | 0:6cb2eaf8b133 | 72 | struct ConfigNode |
caoyuan9642 | 0:6cb2eaf8b133 | 73 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 74 | ConfigItem *config; |
caoyuan9642 | 0:6cb2eaf8b133 | 75 | const ConfigItem *default_config; |
caoyuan9642 | 0:6cb2eaf8b133 | 76 | ConfigNode *next; |
caoyuan9642 | 0:6cb2eaf8b133 | 77 | }*head; |
caoyuan9642 | 0:6cb2eaf8b133 | 78 | |
caoyuan9642 | 0:6cb2eaf8b133 | 79 | static TelescopeConfiguration &getInstance() |
caoyuan9642 | 0:6cb2eaf8b133 | 80 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 81 | return instance; |
caoyuan9642 | 0:6cb2eaf8b133 | 82 | } |
caoyuan9642 | 0:6cb2eaf8b133 | 83 | |
caoyuan9642 | 0:6cb2eaf8b133 | 84 | ConfigItem *getConfigItem(const char *name); |
caoyuan9642 | 0:6cb2eaf8b133 | 85 | ConfigItem *getConfigItemCheck(const char *name); |
caoyuan9642 | 0:6cb2eaf8b133 | 86 | |
caoyuan9642 | 0:6cb2eaf8b133 | 87 | void setConfig(const char *name, char *value); |
caoyuan9642 | 0:6cb2eaf8b133 | 88 | |
caoyuan9642 | 0:6cb2eaf8b133 | 89 | static int getIntFromConfig(ConfigItem *); |
caoyuan9642 | 0:6cb2eaf8b133 | 90 | static double getDoubleFromConfig(ConfigItem *); |
caoyuan9642 | 0:6cb2eaf8b133 | 91 | static bool getBoolFromConfig(ConfigItem *); |
caoyuan9642 | 0:6cb2eaf8b133 | 92 | static char *getStringFromConfig(ConfigItem *, char buf[], int len); |
caoyuan9642 | 0:6cb2eaf8b133 | 93 | |
caoyuan9642 | 0:6cb2eaf8b133 | 94 | static bool setIntToConfig(ConfigItem *, int value); |
caoyuan9642 | 0:6cb2eaf8b133 | 95 | static bool setDoubleToConfig(ConfigItem *, double value); |
caoyuan9642 | 0:6cb2eaf8b133 | 96 | static bool setBoolToConfig(ConfigItem *, bool value); |
caoyuan9642 | 0:6cb2eaf8b133 | 97 | static bool setStringToConfig(ConfigItem *, char *value); |
caoyuan9642 | 0:6cb2eaf8b133 | 98 | |
caoyuan9642 | 0:6cb2eaf8b133 | 99 | static int eqmount_config(EqMountServer *server, const char *cmd, int argn, |
caoyuan9642 | 0:6cb2eaf8b133 | 100 | char *argv[]); |
caoyuan9642 | 0:6cb2eaf8b133 | 101 | }; |
caoyuan9642 | 0:6cb2eaf8b133 | 102 | |
caoyuan9642 | 0:6cb2eaf8b133 | 103 | #endif /* PUSHTOGO_TELESCOPECONFIGURATION_H_ */ |
caoyuan9642 | 0:6cb2eaf8b133 | 104 |