14 #ifndef __ENGDUINOPROTOCOL_H__
15 #define __ENGDUINOPROTOCOL_H__
29 #define VERSION 30 // ENGDUINOV3_0_SKETCH_BASIC
32 #define COMMUNICATION_PC_TERMINAL 1 // PC terminal
33 #define COMMUNICATION_BT_MODULE 2 // Bluetooth module
36 #define COM_SET_LEDS 10
37 #define COM_SET_LED 11
39 #define COM_SET_PINS_DIGITAL_TYPE 20
40 #define COM_SET_PINS_ANALOG_TYPE 21
41 #define COM_SET_PINS_DIGITAL_VALUE 22
42 #define COM_SET_PINS_ANALOG_VALUE 23
46 #define COM_SET_STATUS 90
48 #define COM_GET_VERSION 100
50 #define COM_GET_SENSORS 110
51 #define COM_GET_TEMPERATURE 111
52 #define COM_GET_ACCELEROMETER 112
53 #define COM_GET_MAGNETOMETER 113
54 #define COM_GET_LIGHT 114
56 #define COM_GET_BUTTON 120
58 #define COM_GET_PINS_DIGITAL_VALUE 130
59 #define COM_GET_PINS_ANALOG_VALUE 131
61 #define COM_GET_IR 160
63 #define COM_GET_STATUS 190
67 #define PACKAGE_TYPE_1 1
68 #define PACKAGE_TYPE_2 2
69 #define PACKAGE_TYPE_3 3
71 #define PACKAGE_PACKAGE_TYPE 0
72 #define PACKAGE_PACKAGE_COMMAND_ID 1
74 #define PACKAGE_MAX_LENGTH 156
75 #define PACKAGE_MAXNR_VALUES 56
77 #define PACKAGE_START_CHR '{'
78 #define PACKAGE_STOP_CHR '}'
79 #define PACKAGE_DELIMITER_CHR ';'
82 #define STATUS_OVERSAMPLING 0 // Enable internal oversampling
87 #define RES_ERR_PACKAGE_HEADER -10
88 #define RES_ERR_PACKAGE_NR_VALS -11
89 #define RES_ERR_PACKAGE_VAL -12
90 #define RES_ERR_PACKAGE_UNKNOWN_SENSOR_TYPE -13
91 #define RES_ERR_PACKAGE_UNKNOWN_STATUS_KEY -14
92 #define RES_ERR_PACKAGE_UNKNOWN_ANALOG_PIN -15
96 #define NR_SENSORS 5 // n+1 (ALL)
97 #define TIME_STAMP 2.05 // OS tick in [ms]
98 #define MIN_TIME 20 // Minimal time between sending packages in [ms]
118 SENSOR_ACC_X_BUF = 1,
119 SENSOR_ACC_Y_BUF = 2,
120 SENSOR_ACC_Z_BUF = 3,
121 SENSOR_MAG_X_BUF = 4,
122 SENSOR_MAG_Y_BUF = 5,
123 SENSOR_MAG_Z_BUF = 6,
126 #define NR_SENSORS_BUF 8 // Need to update if more sensors added! Value should be equal to elements in enum above.
135 PIN_TRAN_LOW_TO_HIGH = 1,
136 PIN_TRAN_HIGH_TO_LOW = 2,
144 #define NR_TRAN_PINS 18 // Number of digital transition pins Dxx
148 extern "C" void TIMER1_COMPA_vect(
void) __attribute__ ((signal));
163 colour ledsColor[16];
164 uint8_t ledsBrightness[16];
165 uint8_t ledsRGB[3][16];
167 long sensorsCnt[NR_SENSORS];
168 long sensorsMatch[NR_SENSORS];
169 uint8_t sensorsReadOnce[NR_SENSORS];
170 bool buttonCatchEnable[2];
171 uint8_t irBuf[IRBUFSZ];
173 byte pinsTranOption[NR_TRAN_PINS];
174 byte pinsOldState[NR_TRAN_PINS];
175 byte pinsType[NR_TRAN_PINS];
176 long pinsCnt[NR_TRAN_PINS];
177 long pinsMatch[NR_TRAN_PINS];
179 long sensorsSum[NR_SENSORS_BUF];
180 uint16_t sensorsSamples[NR_SENSORS];
181 uint16_t overSamplingCnt;
182 uint16_t overSamplingMatch;
183 uint8_t overSamplingRead;
186 uint16_t overSampling;
188 void _readThermistor(
long *outVals);
189 void _readAccelerometer(
long *outVals);
190 void _readMagnetometer(
long *outVals);
191 void _readLight(
long *outVals);
192 void _readSensors(
long *outVals);
195 EngduinoProtocolClass();
196 ~EngduinoProtocolClass();
207 int parsePackage(String str, byte *outNrVals,
long *outVals);
208 int parsePackageHeader(byte communicationChannel, byte inNrVals,
long *inVals,
struct EngduinoPackage *outPackage, byte *outHeaderSize);
209 int sendPackage(byte inNrVals, byte inCommandID,
long *inVals);
210 int sendPackage(
struct EngduinoPackage *engPackage, byte inNrVals, byte inCommandID,
long *inVals);
211 int setLED(
struct EngduinoPackage *engPackage, byte nrVals,
long *inVals);
212 int setLEDs(
struct EngduinoPackage *engPackage, byte nrVals,
long *inVals);
213 int setGetStatus(
struct EngduinoPackage *engPackage, byte nrVals,
long *inVals, uint8_t setGet);
214 int setGetIR(
struct EngduinoPackage *engPackage, byte nrVals,
long *inVals, uint8_t setGet);
215 int setPinsType(
struct EngduinoPackage *engPackage, byte inNrVals,
long *inVals, uint8_t digAnalog);
216 int setPinsValue(
struct EngduinoPackage *engPackage, byte inNrVals,
long *inVals, uint8_t digAnalog);
218 int getSensor(
struct EngduinoPackage *engPackage,
int sensorType, byte nrVals,
long *inVals);
219 int getButton(
struct EngduinoPackage *engPackage, byte nrVals,
long *inVals);
220 int getPinsValue(
struct EngduinoPackage *engPackage, byte inNrVals,
long *inVals, uint8_t digAnalog);
226 friend void TIMER1_COMPA_vect();
Definition: EngduinoLEDs.h:36
Definition: EngduinoProtocol.h:150
Definition: EngduinoMagnetometer.h:209
Definition: EngduinoProtocol.h:101
Definition: EngduinoAccelerometer.h:733
Definition: EngduinoIR.h:43
Definition: EngduinoLight.h:29
Definition: EngduinoThermistor.h:26