ARTSAT API  2.7.1
 全て クラス ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義 ページ
ofxICCPhysicalSAT.h
1 /*
2 ** ARTSAT Project
3 **
4 ** Original Copyright (C) 2011 - 2012 HORIGUCHI Junshi.
5 ** http://iridium.jp/
6 ** zap00365@nifty.com
7 ** Portions Copyright (C) <year> <author>
8 ** <website>
9 ** <e-mail>
10 ** Version openFrameworks
11 ** Website http://artsat.jp/
12 ** E-mail info@artsat.jp
13 **
14 ** This source code is for Xcode.
15 ** Xcode 4.2 (LLVM compiler 3.0)
16 **
17 ** ofxICCPhysicalSAT.h
18 **
19 ** ------------------------------------------------------------------------
20 **
21 ** THE SOURCE CODE AND THE BINARY OF ARTSAT API IS DISTRIBUTED UNDER THE MIT LICENSE WRITTEN BELOW.
22 ** THE LICENSE OF ANY DATA GOTTEN THROUGH ARTSAT API FOLLOWS PROVIDED LICENSE ON EACH SATELLITE.
23 **
24 ** ARTSAT API のソースコードとバイナリは下記に示す MIT ライセンスの元で配布されます。
25 ** ARTSAT API を通して取得できるデータのライセンスに関してはデータの提供元となる各衛星の定めるライセンスに準じます。
26 **
27 ** The MIT License (MIT)
28 **
29 ** Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
30 ** associated documentation files (the "Software"), to deal in the Software without restriction,
31 ** including without limitation the rights to use, copy, modify, merge, publish, distribute,
32 ** sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
33 ** furnished to do so, subject to the following conditions:
34 ** The above copyright notice and this permission notice shall be included in all copies or
35 ** substantial portions of the Software.
36 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
37 ** BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
38 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
39 ** WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
40 ** OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
41 **
42 ** 以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)の複製を
43 ** 取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。
44 ** これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および、または販売する権利、
45 ** およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。
46 ** 上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分に記載するものとします。
47 ** ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。
48 ** ここでいう保証とは、商品性、特定の目的への適合性、および権利非侵害についての保証も含みますが、それに限定されるものではありません。
49 ** 作者または著作権者は、契約行為、不法行為、またはそれ以外であろうと、ソフトウェアに起因または関連し、
50 ** あるいはソフトウェアの使用またはその他の扱いによって生じる一切の請求、損害、その他の義務について何らの責任も負わないものとします。
51 */
52 
53 #ifndef __OFX_ICCPHYSICALSAT_H
54 #define __OFX_ICCPHYSICALSAT_H
55 
57 #include "ofxSATType.h"
58 #include "ofxSAT.h"
59 #include "ofThread.h"
60 
61 class ofxICCPhysicalSAT : public ofxSAT, private ofThread {
62  public:
63  typedef ofxICCPhysicalSAT self;
64  typedef ofxSAT super;
65 
66  public:
67  enum SensorEnum {
68  // TODO: BEGIN
69  SENSOR_EXAMPLE_X = super::SENSOR_LIMIT,
70  SENSOR_EXAMPLE_Y,
71  // TODO: END
72  SENSOR_LIMIT
73  };
74 
75  public:
77  struct TableRec {
78  FormatEnum format;
79  UnitEnum unit;
80  union {
81  struct {
82  char no[32];
83  char yes[32];
84  } boolHint;
85  struct {
86  int lower;
87  int upper;
88  } intHint;
89  struct {
90  double lower;
91  double upper;
92  } doubleHint;
93  struct {
94  char format[32];
95  } ofxSATTimeHint;
96  };
97  };
99 
100  private:
101  mutable ofMutex _mutexValue;
102  mutable ofMutex _mutexCrawl;
103  mutable bool _crawl;
104  mutable bool _immediate;
105  bool _valid;
106  ofxSATTime _time;
107  // TODO: BEGIN
108  double _valueExampleX;
109  double _valueExampleY;
110  // TODO: END
111  ofxSATTimeDiff _update;
112  ofxSATTimeDiff _retry;
113 
114  public:
115  explicit ofxICCPhysicalSAT (void);
116  virtual ~ofxICCPhysicalSAT (void);
117  ofxSATError setUpdateInterval (ofxSATTimeDiff const& param);
118  ofxSATTimeDiff const& getUpdateInterval (void) const;
119  ofxSATError setRetryInterval (ofxSATTimeDiff const& param);
120  ofxSATTimeDiff const& getRetryInterval (void) const;
121  virtual ofxSATError getAvailableCount (int* result) const;
122  virtual ofxSATError getAvailableCount (ofxSATTime const& begin, ofxSATTime const& end, int* result) const;
123  virtual ofxSATError getAvailableTime (std::vector<ofxSATTime>* result) const;
124  virtual ofxSATError getAvailableTime (ofxSATTime const& begin, ofxSATTime const& end, std::vector<ofxSATTime>* result) const;
125  virtual ofxSATError getSensorFormat (SensorType sensor, FormatEnum* result) const;
126  virtual ofxSATError getSensorUnit (SensorType sensor, UnitEnum* result) const;
127  virtual ofxSATError getSensorMinimum (SensorType sensor, void* result, int size) const;
128  virtual ofxSATError getSensorMaximum (SensorType sensor, void* result, int size) const;
129  virtual ofxSATError getSensorData (SensorType sensor, ofxSATTime const& time, void* result, int size, bool* simulation = NULL) const;
130  // TODO: BEGIN
131  ofxSATError getSensorExampleX (ofxSATTime const& time, double* result, bool* simulation = NULL) const;
132  ofxSATError getSensorExampleY (ofxSATTime const& time, double* result, bool* simulation = NULL) const;
133  // TODO: END
134  virtual ofxSATError setup (void);
135  virtual void cleanup (void);
136  virtual ofxSATError update (ofxSATTime const& time = ofxSATTime::currentTime());
137  private:
138  virtual void threadedFunction (void);
139  TableRec const* getTableBySensor (SensorType sensor) const;
140  void pushCrawl (bool immediate) const;
141  bool popCrawl (void) const;
142  bool remainsCrawl (void) const;
143  bool isImmediate (void) const;
144  private:
145  ofxICCPhysicalSAT (ofxICCPhysicalSAT const&);
146  ofxICCPhysicalSAT& operator= (ofxICCPhysicalSAT const&);
147 };
148 
149 /*public */inline ofxSATTimeDiff const& ofxICCPhysicalSAT::getUpdateInterval(void) const
150 {
151  return _update;
152 }
153 
154 /*public */inline ofxSATTimeDiff const& ofxICCPhysicalSAT::getRetryInterval(void) const
155 {
156  return _retry;
157 }
158 
159 // TODO: BEGIN
160 /*public */inline ofxSATError ofxICCPhysicalSAT::getSensorExampleX(ofxSATTime const& time, double* result, bool* simulation) const
161 {
162  return getSensorData(SENSOR_EXAMPLE_X, time, result, sizeof(*result), simulation);
163 }
164 
165 /*public */inline ofxSATError ofxICCPhysicalSAT::getSensorExampleY(ofxSATTime const& time, double* result, bool* simulation) const
166 {
167  return getSensorData(SENSOR_EXAMPLE_Y, time, result, sizeof(*result), simulation);
168 }
169 // TODO: END
171 
172 #endif