eBoard 🐉  ①⑧⑨
Written for SIA 2017/2018
eBoard.h
Go to the documentation of this file.
1 
2 //EagleoutIce 2018
3 //IF YOU SEE THIS THIS IS THE UNPROCESSED FILE! GO TO 'SOURCE CODE' IN THE DOCS
9  #ifndef EBOARD_HEADER_GUARD
10  #define EBOARD_HEADER_GUARD
11 
12 //=====================================================================================================================================================
13 // GCC pragmas
14 //=====================================================================================================================================================
15 
16  #pragma GCC diagnostic push
17  #pragma GCC diagnostic ignored "-Wall"
18  #pragma GCC diagnostic ignored "-Wextra"
19 
20 //=====================================================================================================================================================
21 // PreprocessorControl
22 //=====================================================================================================================================================
23 
25 
26 //=====================================================================================================================================================
27 // Version
28 //=====================================================================================================================================================
29 
31  #define EBOARD_VERSION "3.2.28d"
32  #define EBOARD_VERSION_NBR 370
34 
35  DEBUG_MSG("If you do not want any preprocessing information from this eBoard-Header set PREPROCESS_DEBUG to 0");
36 
37  //i am a guard... leave me alone :D
38  #ifdef DOC
39  DEBUG_MSG("Documentation macro SET => Full doc features enabled");
40  #define ARDUINO 200
41 
44  #define EBOARD_I2C 0x1
45 
49  #define EBOARD_LCD 0x1
50 
53  #define EBOARD_SHIFT_REGISTER 0x1
54 
57  #define EBOARD_BLUETOOTH 0x1
58 
61  #define REPT_TASK
62 
65  #define __AVR_ATmega2560__
66 
69  #define __AVR_ATmega328P__
70 
73  #define EBOARD_NEO 0x1
74 
79  #define HIGHSPEED
80  #define __AVR__
82  #endif
83  #if defined(ARDUINO) //general platform-check [No tab]
84  #include <avr/pgmspace.h>
85 
86 //=====================================================================================================================================================
87 // Namespace
88 //=====================================================================================================================================================
93  namespace eagle_impl {}
94 
95  using namespace eagle_impl;
96 
97 //=====================================================================================================================================================
98 // Helpers
99 //=====================================================================================================================================================
100 
101  //-------------------------------------------------------------------------------------------------------------------------------------------------
102  // main method
103  //-------------------------------------------------------------------------------------------------------------------------------------------------
104 
108  #define main eVirtual_main //main has a different meaning^^
109 
110  //-------------------------------------------------------------------------------------------------------------------------------------------------
111  // stop flag
112  //-------------------------------------------------------------------------------------------------------------------------------------------------
113 
119  static bool STOP = false;
120 
121  //-------------------------------------------------------------------------------------------------------------------------------------------------
122  // ignore_size
123  //-------------------------------------------------------------------------------------------------------------------------------------------------
124 
128  #ifdef IGNORE_SIZE
129  DEBUG_MSG("You defined IGNORE_SIZE: byte will be used");
130  typedef byte optVAL_t;
131  #else
132  DEBUG_MSG("You did not define IGNORE_SIZE: int will be used");
133  typedef int optVAL_t;
134  #endif
135 
136 //=====================================================================================================================================================
137 // Macro Definitions
138 //=====================================================================================================================================================
139 
140  //-------------------------------------------------------------------------------------------------------------------------------------------------
141  // guesspath
142  //-------------------------------------------------------------------------------------------------------------------------------------------------
143 
144  #ifndef EBOARD_GUESSPATH
145  DEBUG_MSG("You are using Guesspath! Necessary libraries for eBoard will be included automatically");
149  #define EBOARD_GUESSPATH 0x1
150  #else
151  DEBUG_MSG("You are not using Guesspath! Necessary libraries for eBoard have to be included manually");
152  #endif
153 
154  //-------------------------------------------------------------------------------------------------------------------------------------------------
155  // arduino version
156  //-------------------------------------------------------------------------------------------------------------------------------------------------
157 
158  #if ARDUINO >= 100 //this could be only Arduino.h but this snippet is portable :D
159  #include "Arduino.h"
160  #else
161  #include <wiring.h>
162  #endif
163 
164  //-------------------------------------------------------------------------------------------------------------------------------------------------
165  // software based hardware check
166  //-------------------------------------------------------------------------------------------------------------------------------------------------
167 
168  #if not ( defined(__AVR_ATmega2560__) || defined(__AVR_ATmega328P__))
169  #error "This library was build for ARDUINO UNO R3 A and ARDUINO MEGA 2560!"
170  #endif
171 
172  //-------------------------------------------------------------------------------------------------------------------------------------------------
173  // pin maximum
174  //-------------------------------------------------------------------------------------------------------------------------------------------------
175 
176  #if defined(__AVR_ATmega2560__)
177  DEBUG_MSG("Building for Arduino Mega with ATmega2560");
181  #define PIN_MAX 0x32 //53 pins to address - 4 !!53 is SS
182  #else
183  DEBUG_MSG("Building for Arduino Uno or Nano with ATmega328P");
184  #define PIN_MAX 0xA // 13 Pins to address - 4 !!10 is SS
185  #endif
186 
187  //-------------------------------------------------------------------------------------------------------------------------------------------------
188  // avr io & interrupts
189  //-------------------------------------------------------------------------------------------------------------------------------------------------
190 
191  #include <avr/io.h>
192  #include <avr/interrupt.h>
193 
194  //-------------------------------------------------------------------------------------------------------------------------------------------------
195  // I²C
196  //-------------------------------------------------------------------------------------------------------------------------------------------------
197 
198  #ifndef EBOARD_I2C
199 
202  #define EBOARD_I2C 0x0 //disabled by default
203  #endif
204 
205  #if EBOARD_I2C > 0x0 && EBOARD_GUESSPATH > 0x0
206  DEBUG_MSG("You enabled I²C features");
207  #ifndef twi_h
208  #define twi_h
209  #ifndef TwoWire_h //because it will be included ._.
210  //#define ATMEGA8
211  #include "source/eagle_Twi.h"
212  #endif
213  #endif
214 
215  #ifndef TwoWire_h
216  #include "source/eagle_TwoWire.h"
217  #endif
218  #else
219  DEBUG_MSG("You disabled I²C");
220  #endif
221 
222  //-------------------------------------------------------------------------------------------------------------------------------------------------
223  // SPI
224  //-------------------------------------------------------------------------------------------------------------------------------------------------
225 
229  #ifndef EBOARD_USE_SPI
230  #define EBOARD_USE_SPI 0x1
231  #endif
232 
233  #ifdef EBOARD_HELPCAR
234  DEBUG_MSG("You switched to helpcar and disabled SPI");
235  #define EBOARD_USE_SPI 0x0
236  #endif
237 
238  #if EBOARD_USE_SPI > 0x0
239  DEBUG_MSG("You enabled SPI");
240  #ifndef _SPI_H_INCLUDED
241  #define _SPI_H_INCLUDED
243  #include "source/eagle_SPI.h"
244  #endif
245  #else
246  DEBUG_MSG("You disabled SPI");
247  #endif
248 
252  #ifndef EBOARD_SPI_SERVO_MAX
253  #define EBOARD_SPI_SERVO_MAX 2
254  #endif
255 
256  #if PREPROCESS_DEBUG > 0x0
257  #pragma message("Set amount of used Servos to " VALUE(EBOARD_SPI_SERVO_MAX))
258  #endif
259 
260  //-------------------------------------------------------------------------------------------------------------------------------------------------
261  // LCD
262  //-------------------------------------------------------------------------------------------------------------------------------------------------
263 
264  #if (EBOARD_I2C > 0x0) && (EBOARD_LCD > 0x0)
265  #include <avr/pgmspace.h>
266  DEBUG_MSG("You enabled LCD");
267  #endif
268 
269  //-------------------------------------------------------------------------------------------------------------------------------------------------
270  // debug
271  //-------------------------------------------------------------------------------------------------------------------------------------------------
272 
276  #ifndef EBOARD_DEBUG_MODE
277  #define EBOARD_DEBUG_MODE 0x1
278  #endif
279 
280  #if EBOARD_DEBUG_MODE > 0x0
281  MACRO_MSG(EBOARD_DEBUG_MODE,"Serial feedback will be send to Computer");
282  #else
283  MACRO_MSG(EBOARD_DEBUG_MODE, "No Serial feedback!");
284  #endif
285 
289  #ifndef EBOARD_DEBUG_SPEED
290  #define EBOARD_DEBUG_SPEED 9600
291  #endif
292 
293  #if PREPROCESS_DEBUG > 0x0
294  #pragma message("Set Debugging speed to " VALUE(EBOARD_DEBUG_SPEED))
295  #endif
296 
297  //-------------------------------------------------------------------------------------------------------------------------------------------------
298  // eboard nano
299  //-------------------------------------------------------------------------------------------------------------------------------------------------
300 
304  #ifndef EBOARD_NANO
305  #define EBOARD_NANO 0x0
306  #endif
307 
308  //-------------------------------------------------------------------------------------------------------------------------------------------------
309  // helpcar
310  //-------------------------------------------------------------------------------------------------------------------------------------------------
311 
312  #if (defined(EBOARD_HELPCAR) || defined(DOC))
313  #ifndef EBOARD_HELPCAR_STEER
314 
317  #define EBOARD_HELPCAR_STEER 12
318  #endif
319 
320  #ifndef EBOARD_HELPCAR_MAIN
321 
324  #define EBOARD_HELPCAR_MAIN 13
325  #endif
326 
327  MACRO_MSG(EBOARD_NANO,"Using Arduino Helpcar environment [e.g. remove AX12Servo]");
328 
329  #if PREPROCESS_DEBUG > 0x1
330  #pragma message("Using " VALUE(EBOARD_HELPCAR_STEER) " as data pin for STEERING MOTOR")
331  #pragma message("Using " VALUE(EBOARD_HELPCAR_MAIN) " as data pin for MAIN (Driving) MOTOR")
332  #endif
333 
334  #else
335  MACRO_MSG(EBOARD_NANO,"Using Arduino UNO/MEGA environment");
336  #endif
337 
338  //-------------------------------------------------------------------------------------------------------------------------------------------------
339  // pin check
340  //-------------------------------------------------------------------------------------------------------------------------------------------------
341 
345  #ifndef EBOARD_CHECK_PINS
346  #define EBOARD_CHECK_PINS 0x1
347  #endif
348 
349  #if EBOARD_CHECK_PINS > 0x0
350  MACRO_MSG(EBOARD_CHECK_PINS,"Check for Pins enabled");
351  #else
352  MACRO_MSG(EBOARD_CHECK_PINS,"Check for Pins disabled");
353  #endif
354 
355  //-------------------------------------------------------------------------------------------------------------------------------------------------
356  // shiftregister
357  //-------------------------------------------------------------------------------------------------------------------------------------------------
358 
359  #ifndef EBOARD_SHIFT_REGISTER
360 
363  #define EBOARD_SHIFT_REGISTER 0x0
364  #endif
365 
366  #if EBOARD_SHIFT_REGISTER > 0x0
367  MACRO_MSG(EBOARD_SHIFT_REGISTER,"Shiftregister enabled");
368  #else
369  MACRO_MSG(EBOARD_SHIFT_REGISTER,"Shiftregister disabled");
370  #endif
371 
372  //-------------------------------------------------------------------------------------------------------------------------------------------------
373  // pwm check
374  //-------------------------------------------------------------------------------------------------------------------------------------------------
375 
379  #ifndef EBOARD_CHECK_PINS_PWM
380  #define EBOARD_CHECK_PINS_PWM 0x1
381  #endif
382 
383  #if EBOARD_CHECK_PINS_PWM > 0x0
384  MACRO_MSG(EBOARD_CHECK_PINS_PWM,"Check for PWM-Pins enabled");
385  #else
386  MACRO_MSG(EBOARD_CHECK_PINS_PWM,"Check for PWM-Pins disabled");
387  #endif
388 
389  //-------------------------------------------------------------------------------------------------------------------------------------------------
390  // utility
391  //-------------------------------------------------------------------------------------------------------------------------------------------------
392 
396  #ifndef EBOARD_USE_UTILITY
397  #define EBOARD_USE_UTILITY 0x1
398  #endif
399 
400  #if EBOARD_USE_UTILITY > 0x0
401  MACRO_MSG(EBOARD_USE_UTILITY,"Utility features will be implemented");
402  #else
403  MACRO_MSG(EBOARD_USE_UTILITY,"Utility features will not be implemented");
404  #endif
405 
406  //-------------------------------------------------------------------------------------------------------------------------------------------------
407  // pwm speed
408  //-------------------------------------------------------------------------------------------------------------------------------------------------
409 
413  #ifndef EBOARD_PWM_SPE
414  #define EBOARD_PWM_SPE 1
415  #endif
416 
417  #if PREPROCESS_DEBUG > 0x0
418  #pragma message("Set PWM interval to " VALUE(EBOARD_PWM_SPE) "s")
419  #endif
420 
421  //-------------------------------------------------------------------------------------------------------------------------------------------------
422  // bluetooth
423  //-------------------------------------------------------------------------------------------------------------------------------------------------
424 
425  #ifndef EBOARD_BLUETOOTH
426 
429  #define EBOARD_BLUETOOTH 0x0
430  #endif
431 
432  #if EBOARD_BLUETOOTH > 0x0
433  MACRO_MSG(EBOARD_BLUETOOTH,"Bluetooth controls enabled");
434  #else
435  MACRO_MSG(EBOARD_BLUETOOTH,"Bluetooth controls disabled");
436  #endif
437 
438  //-------------------------------------------------------------------------------------------------------------------------------------------------
439  // clamp
440  //-------------------------------------------------------------------------------------------------------------------------------------------------
441 
445  #ifndef EBOARD_CLAMP
446  #define EBOARD_CLAMP 0x1
447  #endif
448 
449  #if EBOARD_CLAMP > 0x0
450  MACRO_MSG(EBOARD_CLAMP,"Motor Range is set to [0;1023]");
451  #else
452  MACRO_MSG(EBOARD_CLAMP,"Motor Range is set to [-300;300]");
453  #endif
454 
455  //-------------------------------------------------------------------------------------------------------------------------------------------------
456  // neo
457  //-------------------------------------------------------------------------------------------------------------------------------------------------
458 
459  #ifndef EBOARD_NEO
460 
463  #define EBOARD_NEO 0x0
464  #endif
465 
466  #if EBOARD_NEO > 0x0
467  MACRO_MSG(EBOARD_NEO,"Adafruit Neo-Pixel support enabled");
468  #else
469  MACRO_MSG(EBOARD_NEO,"Adafruit Neo-Pixel support disabled");
470  #endif
471 
472  //-------------------------------------------------------------------------------------------------------------------------------------------------
473  // reset
474  //-------------------------------------------------------------------------------------------------------------------------------------------------
475 
479  #ifndef EBOARD_USE_RESET
480  #define EBOARD_USE_RESET 0x1
481  #endif
482 
483  #if EBOARD_USE_RESET > 0x0
484  #include <avr/wdt.h>
485  MACRO_MSG(EBOARD_USE_RESET,"Software-Reset is available" );
486  #else
487  MACRO_MSG(EBOARD_USE_RESET,"Software-Reset is not available" );
488  #endif
489 
490 //=====================================================================================================================================================
491 // Pin Macro
492 //=====================================================================================================================================================
493 
494  //-------------------------------------------------------------------------------------------------------------------------------------------------
495  // bluetooth
496  //-------------------------------------------------------------------------------------------------------------------------------------------------
497 
501  #ifndef PIN_BLUETOOTH_STATE
502  #if defined(__AVR_ATmega2560__)
503  #define PIN_BLUETOOTH_STATE 0x13 // 19
504  #else
505  #define PIN_BLUETOOTH_STATE 0x2
506  #endif
507  #endif
508 
512  #ifndef PIN_BLUETOOTH_RX
513  #if defined(__AVR_ATmega2560__)
514  #define PIN_BLUETOOTH_RX 0x13 // 19
515  #else
516  #define PIN_BLUETOOTH_RX 0x2
517  #endif
518  #endif
519 
523  #ifndef PIN_BLUETOOTH_TX
524  #if defined(__AVR_ATmega2560__)
525  #define PIN_BLUETOOTH_TX 0x12 // 18
526  #else
527  #define PIN_BLUETOOTH_TX 0x3
528  #endif
529  #endif
530 
531  //-------------------------------------------------------------------------------------------------------------------------------------------------
532  // motor
533  //-------------------------------------------------------------------------------------------------------------------------------------------------
534 
538  #ifndef PIN_MOTOR_DIR
539  #define PIN_MOTOR_DIR 0x4
540  #endif
541 
545  #ifndef PIN_MOTOR_SPE
546  #define PIN_MOTOR_SPE 0x5
547  #endif
548 
549  //-------------------------------------------------------------------------------------------------------------------------------------------------
550  // shiftregister
551  //-------------------------------------------------------------------------------------------------------------------------------------------------
552 
556  #ifndef PIN_SHIFT_CLK
557  #define PIN_SHIFT_CLK 0x6
558  #endif
559 
562  #ifndef PIN_SHIFT_DAT
563  #define PIN_SHIFT_DAT 0x7
564  #endif
565 
568  #ifndef PIN_SHIFT_LAT
569  #define PIN_SHIFT_LAT 0x8
570  #endif
571 
572 //=====================================================================================================================================================
573 // Modules
574 //=====================================================================================================================================================
575 
576  //-------------------------------------------------------------------------------------------------------------------------------------------------
577  // bluetooth
578  //-------------------------------------------------------------------------------------------------------------------------------------------------
579 
580  #if (EBOARD_BLUETOOTH > 0x0) && defined(__AVR_ATmega328P__)
581  #if EBOARD_GUESSPATH > 0x0
582  #ifndef SoftwareSerial_h
583  //again to resolve including errors we'll include the SoftwareSerial cpp file
584  #define SoftwareSerial_h
586  #endif
587  #endif
588 
594  #endif
595 
596 
597 
598  #if EBOARD_BLUETOOTH > 0x0
599  #include "source/eagle_Bluetooth.h"
600  #endif
601 
602  #if EBOARD_BLUETOOTH > 0x0
603  #include "source/eagle_RB14Scan.h"
604  #endif
605  //-------------------------------------------------------------------------------------------------------------------------------------------------
606  // sine and gamma8
607  //-------------------------------------------------------------------------------------------------------------------------------------------------
608 
609  #include "source/eagle_Comfort.h"
610 
611  //-------------------------------------------------------------------------------------------------------------------------------------------------
612  // servo
613  //-------------------------------------------------------------------------------------------------------------------------------------------------
614 
615  #if (defined(EBOARD_HELPCAR) || defined(DOC))
616  //offer more functions
617  #if EBOARD_GUESSPATH > 0x0
618  #include "source/eagle_Servo.h"
620  #endif
621  #endif
622 
623  //-------------------------------------------------------------------------------------------------------------------------------------------------
624  // _assert
625  //-------------------------------------------------------------------------------------------------------------------------------------------------
626 
627  #if EBOARD_DEBUG_MODE > 0x0
628 
631  #define __ASSERT_USE_STDERR
632  #include "source/eagle_Assert.h"
633  #endif
634 
635  //-------------------------------------------------------------------------------------------------------------------------------------------------
636  // check
637  //-------------------------------------------------------------------------------------------------------------------------------------------------
638 
639  /* NOTE this is DEPRECATED */
640  #include "source/eagle_Checks.h"
641 
642  //-------------------------------------------------------------------------------------------------------------------------------------------------
643  // shiftregister
644  //-------------------------------------------------------------------------------------------------------------------------------------------------
645 
646  #if EBOARD_SHIFT_REGISTER > 0x0
647  #include "source/eagle_ShiftExt.h"
648  #endif
649 
650  //-------------------------------------------------------------------------------------------------------------------------------------------------
651  // pin control
652  //-------------------------------------------------------------------------------------------------------------------------------------------------
653 
654  #include "source/eagle_PinCtrl.h"
655 
656  //-------------------------------------------------------------------------------------------------------------------------------------------------
657  // Soccerboard&co module
658  //-------------------------------------------------------------------------------------------------------------------------------------------------
659 
660  #if EBOARD_USE_SPI > 0x0 && (EBOARD_NANO == 0x0)
661  #include "source/eagle_ServoCds55.h"
662  #endif
663 
664  #if EBOARD_NANO == 0
665  #include "source/eagle_SoccerBoard.h"
666  #include "source/eagle_I2CInOut.h"
667  #ifndef EBOARD_HELPCAR
668  #include "source/eagle_AX12Servo.h"
670  #endif
671  #endif
672 
673  //-------------------------------------------------------------------------------------------------------------------------------------------------
674  // LCD
675  //-------------------------------------------------------------------------------------------------------------------------------------------------
676 
677  #if EBOARD_I2C > 0x0
678  #include "source/eagle_I2C.h"
679  //Beginof LCD configuration
680  #if EBOARD_LCD > 0x0
681  #include "source/eagle_LCD.h"
682  #endif
683  #endif
684 
685  //-------------------------------------------------------------------------------------------------------------------------------------------------
686  // NEO
687  //-------------------------------------------------------------------------------------------------------------------------------------------------
688 
689  #if EBOARD_NEO > 0x0
690  #include "source/eagle_NeoPixel.h"
691  #endif
692 
693  //-------------------------------------------------------------------------------------------------------------------------------------------------
694  // rept task & setup
695  //-------------------------------------------------------------------------------------------------------------------------------------------------
696 
697  #ifdef REPT_TASK
698  extern void rept_task(void);
699  // DEBUG_MSG("You defined REPT_TASK: you have to define rept_task(void)!");
700  #else
701  DEBUG_MSG("You did not define REPT_TASK: rept_task(void) will not have any effect");
702  #endif
703 
704  #include "source/eagle_ReptTask.h"
705  #include "source/eagle_Setup.h"
707  void loop(void);
709  void loop(void){
710  //shall be empty
711  }
713 
714  //-------------------------------------------------------------------------------------------------------------------------------------------------
715  // helpcar
716  //-------------------------------------------------------------------------------------------------------------------------------------------------
717 
718  #if defined(EBOARD_HELPCAR) || defined(DOC)
719  #include "source/eagle_HelpMot.h"
720  #endif
721 
722  #else
723  #error This library is build for arduino-devices and should be used only in the Arduino IDE or with a similar linking process
724  #endif
725 
726 //=====================================================================================================================================================
727 // GCC pragmas
728 //=====================================================================================================================================================
729 
730  #pragma GCC diagnostic pop
731 
732 #endif
Servo steerMotor
Definition: eBoard.h:619
this file contains sine8 and gamma8
#define EBOARD_CHECK_PINS
Definition: eBoard.h:346
SoftwareSerial _serial(0x13, 0x12)
this is the recomenned-to-use _serial object for bluetooth communcation :D
this file contains the I2CInOut class
this file contains cool stuff... this file contains cool stuff... this file contains cool stuff...
this file contains the SoccerBoard class
#define EBOARD_BLUETOOTH
Definition: eBoard.h:57
this file contains the ServoCds55 class
this file contains cool stuff... it controls pins
this file contains the Servo class
this file contains the SPI class
#define EBOARD_USE_UTILITY
Definition: eBoard.h:397
void rept_task(void)
this file contains cool stuff to access the bluetooth interface
this namespace contains all the don&#39;t use manually classes ;)
this file contains the assert wrapper for EBOARD_DEBUG_MODE
#define PIN_BLUETOOTH_RX
Definition: eBoard.h:514
this file contains the NeoPixel class
this file contains the DynamixelBoard class
#define EBOARD_CLAMP
Definition: eBoard.h:446
this file contains cool stuff to access the I²C interface
static bool STOP
Definition: eBoard.h:119
this file contains the helper to acces the motor on the main car
#define EBOARD_NANO
Definition: eBoard.h:305
this file contains the AX12Servo class
#define EBOARD_CHECK_PINS_PWM
Definition: eBoard.h:380
#define EBOARD_NEO
Definition: eBoard.h:73
this file contains the Twi class
#define EBOARD_SHIFT_REGISTER
Definition: eBoard.h:53
#define PIN_BLUETOOTH_TX
Definition: eBoard.h:525
this file contains the SoftwareSerial class
this file contains cool stuff never seen by the Arduino :/
this file contains the setup method
this file contains the LCD class
#define EBOARD_USE_RESET
Definition: eBoard.h:480
int optVAL_t
Definition: eBoard.h:133
#define EBOARD_DEBUG_MODE
Definition: eBoard.h:277
Servo mainMotor
Definition: eBoard.h:619
this file contains the RB14Scan class
void loop(void)
As we have an Arduino we need a setup function ;)
this file contains the cool shift-EXTension
this file contains the TwoWire class
this file contains various checkers like checkIdx
[NANO] The standard Arduino Servo Class
Definition: eagle_Servo.h:84
[328p] This is used to avoid path resolving issues and defines the common known Arduino SoftwareSeria...