]> AND Private Git Repository - Cipher_code.git/blob - Arduino/libraries/Firmata/FirmataMarshaller.h
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
up
[Cipher_code.git] / Arduino / libraries / Firmata / FirmataMarshaller.h
1 /*
2   FirmataMarshaller.h
3   Copyright (c) 2006-2008 Hans-Christoph Steiner.  All rights reserved.
4   Copyright (C) 2009-2016 Jeff Hoefs.  All rights reserved.
5
6   This library is free software; you can redistribute it and/or
7   modify it under the terms of the GNU Lesser General Public
8   License as published by the Free Software Foundation; either
9   version 2.1 of the License, or (at your option) any later version.
10
11   See file LICENSE.txt for further informations on licensing terms.
12 */
13
14 #ifndef FirmataMarshaller_h
15 #define FirmataMarshaller_h
16
17 #if defined(__cplusplus) && !defined(ARDUINO)
18   #include <cstddef>
19   #include <cstdint>
20 #else
21   #include <stddef.h>
22   #include <stdint.h>
23 #endif
24
25 #include <Stream.h>
26
27 namespace firmata {
28
29 class FirmataMarshaller
30 {
31     friend class FirmataClass;
32
33   public:
34     /* constructors */
35     FirmataMarshaller();
36
37     /* public methods */
38     void begin(Stream &s);
39     void end();
40
41     /* serial send handling */
42     void queryFirmwareVersion(void) const;
43     void queryVersion(void) const;
44     void reportAnalogDisable(uint8_t pin) const;
45     void reportAnalogEnable(uint8_t pin) const;
46     void reportDigitalPortDisable(uint8_t portNumber) const;
47     void reportDigitalPortEnable(uint8_t portNumber) const;
48     void sendAnalog(uint8_t pin, uint16_t value) const;
49     void sendAnalogMappingQuery(void) const;
50     void sendCapabilityQuery(void) const;
51     void sendDigital(uint8_t pin, uint8_t value) const;
52     void sendDigitalPort(uint8_t portNumber, uint16_t portData) const;
53     void sendFirmwareVersion(uint8_t major, uint8_t minor, size_t bytec, uint8_t *bytev) const;
54     void sendVersion(uint8_t major, uint8_t minor) const;
55     void sendPinMode(uint8_t pin, uint8_t config) const;
56     void sendPinStateQuery(uint8_t pin) const;
57     void sendString(const char *string) const;
58     void sendSysex(uint8_t command, size_t bytec, uint8_t *bytev) const;
59     void setSamplingInterval(uint16_t interval_ms) const;
60     void systemReset(void) const;
61
62   private:
63     /* utility methods */
64     void reportAnalog(uint8_t pin, bool stream_enable) const;
65     void reportDigitalPort(uint8_t portNumber, bool stream_enable) const;
66     void sendExtendedAnalog(uint8_t pin, size_t bytec, uint8_t * bytev) const;
67     void encodeByteStream (size_t bytec, uint8_t * bytev, size_t max_bytes = 0) const;
68
69     Stream * FirmataStream;
70 };
71
72 } // namespace firmata
73
74 #endif /* FirmataMarshaller_h */
75