ARTSAT API  2.7.1
 全て クラス ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義 ページ
ofxSAT.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 ** ofxSAT.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_SAT_H
54 #define __OFX_SAT_H
55 
62 #include "ofxSATType.h"
63 #include "ofEvents.h"
64 #include "ofxSATTime.h"
65 
67 
76 class ofxSAT {
77  public:
81  typedef ofxSAT self;
82 
83  public:
88  enum SensorEnum {
89  // default
92  };
97  enum FormatEnum {
98  // primitive
105  // class
110  // default
113  };
118  enum UnitEnum {
119  // general
124  // voltage
139  // current
154  // power
197  // distance
216  // velocity
235  // acceleration
254  // temperature
273  // magnetism
288  // default
291  };
292 
293  public:
299  typedef int SensorType;
301 
304  struct TLERec {
308  char line[2][70];
309  };
311 
317  class Notifier {
318  protected:
337  virtual void onNotifyTLE (TLERec const& tle, ofxSATTime const& time);
353  virtual void onNotifyData (ofxSATTime const& time);
371  virtual void onNotifyFinish (ofxSATError const& error);
372  friend class ofxSAT;
373  };
374  private:
375  struct EventTLERec {
376  TLERec tle;
377  ofxSATTime time;
378  };
379  struct EventDataRec {
380  ofxSATTime time;
381  };
382  struct EventFinishRec {
383  ofxSATError error;
384  };
385 
386  private:
387  bool _state;
388  std::string _id;
389  bool _tleValid;
390  TLERec _tleTLE;
391  ofxSATTime _tleTime;
392  mutable ofEvent<EventTLERec> _eventTLE;
393  mutable ofEvent<EventDataRec> _eventData;
394  mutable ofEvent<EventFinishRec> _eventFinish;
395  Notifier* _notifier;
396 
397  public:
402  virtual ~ofxSAT (void) = 0;
407  std::string const& getID (void) const;
420  ofxSATError getTLE (TLERec* tle, ofxSATTime* time = NULL) const;
432  virtual ofxSATError getAvailableCount (int* result) const;
447  virtual ofxSATError getAvailableCount (ofxSATTime const& begin, ofxSATTime const& end, int* result) const;
473  virtual ofxSATError getAvailableTime (std::vector<ofxSATTime>* result) const;
508  virtual ofxSATError getAvailableTime (ofxSATTime const& begin, ofxSATTime const& end, std::vector<ofxSATTime>* result) const;
521  virtual ofxSATError getSensorFormat (SensorType sensor, FormatEnum* result) const;
534  virtual ofxSATError getSensorUnit (SensorType sensor, UnitEnum* result) const;
548  virtual ofxSATError getSensorMinimum (SensorType sensor, void* result, int size) const;
562  virtual ofxSATError getSensorMaximum (SensorType sensor, void* result, int size) const;
615  virtual ofxSATError getSensorData (SensorType sensor, ofxSATTime const& time, void* result, int size, bool* simulation = NULL) const;
627  ofxSATError setNotifier (Notifier* param);
634  Notifier* getNotifier (void) const;
641  bool isValid (void) const;
651  virtual ofxSATError setup (void);
659  virtual void cleanup (void);
670  virtual ofxSATError update (ofxSATTime const& time = ofxSATTime::currentTime());
671  protected:
676  explicit ofxSAT (void);
682  void setID (std::string const& param);
691  void setTLE (TLERec const& tle, ofxSATTime const& time);
698  void notifyData (ofxSATTime const& time) const;
705  void notifyFinish (ofxSATError const& error) const;
713  static std::string trimSpace (std::string const& param);
721  static std::string trimNonNumeric (std::string const& param);
731  static std::string replaceString (std::string const& string, std::string const& from, std::string const& to);
744  static ofxSATError checkSize (FormatEnum format, int size);
745  private:
746  void handleNotifyTLE (EventTLERec& event);
747  void handleNotifyData (EventDataRec& event);
748  void handleNotifyFinish (EventFinishRec& event);
749  private:
750  ofxSAT (ofxSAT const&);
751  ofxSAT& operator= (ofxSAT const&);
752 };
753 
754 /*public */inline std::string const& ofxSAT::getID(void) const
755 {
756  return _id;
757 }
758 
759 /*public */inline ofxSAT::Notifier* ofxSAT::getNotifier(void) const
760 {
761  return _notifier;
762 }
763 
764 /*public */inline bool ofxSAT::isValid(void) const
765 {
766  return _state;
767 }
768 
769 /*protected */inline void ofxSAT::setID(std::string const& param)
770 {
771  _id = param;
772  return;
773 }
774 
775 #endif