00001 00002 00003 00004 00005 00006 00007 00008 #ifndef command 00009 #define command 00010 00011 const int max_params = 255; 00012 00013 class cmd 00014 { 00015 public: 00016 00019 unsigned char calc_checksum_mod( void ); 00020 00021 private: 00022 00023 unsigned char type; 00024 unsigned char content; 00025 unsigned char param_number; 00026 unsigned char params[max_params]; 00027 unsigned char checksum_mod; 00028 00029 //Konstruktor am besten mit Parametern aufrufen! 00030 cmd( unsigned char atype, unsigned char acontent, unsigned char aparams[] ); 00031 //Falls man ihn ohne Parameter aufruft, unbedingt sicherstellen, dass 00032 //Prüfsumme checksum_mod und param_number korrekt gesetzt werden! 00033 cmd( void ); 00034 00035 /* 00036 Wir brauchen OBdA nicht mehr als 255 Parameter pro Befehl 00037 Die feste Größe des Parameterfeldes gewährleistet, dass wir mit der durch 255 00038 beschränkten Variable param_number immer alle Parameter zählen können und 00039 außerdem bleibt so die Größe eines jeden Befehls konstant (259 Bytes bis jetzt) 00040 */ 00041 00042 }; 00043 00044 00045 /* 00046 Dies ist mein Vorschlag für eine Vergabe von Typennummern: 00047 1: Systemmeldung, z.B. 00048 - Ping 00049 - Befehl zum ausführen der zwischengespeicherten Roboterbefehle 00050 - Befehl: Programm schließen [und System herunterfahren] 00051 2: Roboterbefehl 00052 - Vorwärts 00053 - Rückwärts 00054 - Rechts 00055 - Links 00056 - Mozart 1 00057 - Mozart 2 00058 - ... 00059 - Mozart n 00060 - Weltherrschaft 00061 */ 00062 00063 #endif