module_robocom_linuxnqc.h

00001 
00002 /*
00003 
00004        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00005        ~ m o d u l e _ r o b o c o m _ l i n u x n q c . h ~
00006        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00007 
00008 Eine Modulklasse zur Roboterkommunikation, welche die Konsolenfunktionen des 
00009 NQC-Kompilierers für Linuxsysteme nutzt. (http://bricxcc.sourceforge.net/nqc/)
00010 Funktioniert nur zusammen mit einem Kompiliermodul des Typs 
00011 module_comp_linuxnqc, mit dem sie auch die Basisklasse module_linuxnqc teilt.
00012 
00013 Alle Konstrukte tragen lateinische Bezeichnungen. Latein ist neben Englisch
00014 womöglich die einzige Weltsprache, die sich korrekt mit den ersten 128 ASCII-
00015 Zeichen schreiben läßt.
00016 
00017 Dieser Quelltext ist ursprünglich Teil des Programmes Eukalyptos, welches zur
00018 Netzwerkfernsteuerung von Lego-RCX-2-Robotern dient und von Lutz Büch, Bastian
00019 Rieck und Carlos Franke im Rahmen eines Praktikums am Interdisziplinären 
00020 Zentrum für Wissenschaftliches Rechnen (IWR) der Universität Heidelberg 
00021 geschaffen wurde.
00022 
00023 */
00024 
00025 
00026 #ifndef MODULE_ROBOCOM_LINUXNQCH
00027 #define MODULE_ROBOCOM_LINUXNQCH
00028 
00029 
00030 #include "module_linuxnqc.h"
00031 #include "module_robocom.h"
00032 #include "module_comp_linuxnqc.h"
00033 #include "module_conf.h"
00034 #include <stdlib.h>
00035 #include <string>
00036 #include <sstream>
00037 #include <fstream>
00038 
00039 
00040 using namespace std;
00041 
00042 
00043 
00052 //classis definita
00053 struct module_robocom_linuxnqc :
00054   public module_robocom, public module_linuxnqc
00055 {
00056   protected:
00057    string via_nqc; //via confunditoris
00058 
00059    string turris; //"-Susb" aut ""
00060 
00061    unsigned short horreum_principale;
00062 
00063    int status;
00064 
00065    module* confunditor; 
00066    module* lector; 
00067    
00068    //exflumen litterarum:
00069    ostringstream exflumen_lit; 
00070    istringstream influmen_lit; 
00071    
00072    //influmen datorum:
00073    fstream flumen_dat; 
00074 
00075    virtual int mod_load();
00076    virtual int mod_unload();
00077    virtual int handle_msg(const char*);
00078    
00079    //functiones novae, heredium non sunt:
00080 
00081    bool proba_npos(string::size_type, char*);
00082    
00086    bool permuta_horreum(string, bool renovatio = false); 
00087 
00088 
00089   public:
00090    module_robocom_linuxnqc();
00091 
00092    virtual int get_status();
00093    virtual char* get_name();
00094 
00095    virtual bool anima(); 
00096    virtual bool anima(float&); 
00097 
00098    virtual bool inanima(); 
00099    virtual bool reanima(); 
00100 
00101    virtual bool mitte_iussum(char*); 
00102    virtual bool mitte_iussum(string); 
00103    virtual bool mitte_iussum(int); 
00104 
00106    //functiones novae, heredium non sunt.
00107    bool mitte_ordinem(string);
00108    bool mitte_ordinem(char*);
00110    //functio nova, heredium non est.
00111    bool obsequere_ordini();
00112 
00114    virtual int ping();
00115 
00117    virtual char* accipe_nuntios();
00118    virtual string accipe_nuntios(bool);
00119 };
00120 
00121 
00122 
00123 #endif

Generated on Sun Sep 3 23:47:22 2006 by  doxygen 1.4.7