
Oregon Scientific Decoder V2 and V3 for Nucleo-F401RE
Oregon-Scientific Decoder for V2 and V3 protocol. As exemple it handles THGR122NX (V2) and THGR810 (V3) sensors.
The software use interrupts to collect frames in a buffer and decode them in a background task.
Regul.h@0:7d471396cb64, 2019-10-12 (annotated)
- Committer:
- sev2000
- Date:
- Sat Oct 12 11:55:05 2019 +0000
- Revision:
- 0:7d471396cb64
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sev2000 | 0:7d471396cb64 | 1 | #include "mbed.h" |
sev2000 | 0:7d471396cb64 | 2 | |
sev2000 | 0:7d471396cb64 | 3 | extern Serial pc; |
sev2000 | 0:7d471396cb64 | 4 | |
sev2000 | 0:7d471396cb64 | 5 | //#define __DEBUG__ |
sev2000 | 0:7d471396cb64 | 6 | #define Level 1 |
sev2000 | 0:7d471396cb64 | 7 | #define DBG(x, ...) if (Level>=3) pc.printf("[DBG]"x"\r\n", ##__VA_ARGS__); |
sev2000 | 0:7d471396cb64 | 8 | #define WARN(x, ...) if (Level>=2) pc.printf("[WARN]"x"\r\n", ##__VA_ARGS__); |
sev2000 | 0:7d471396cb64 | 9 | #define ERR(x, ...) if (Level>=1) pc.printf("[ERR]"x"\r\n", ##__VA_ARGS__); |
sev2000 | 0:7d471396cb64 | 10 | |
sev2000 | 0:7d471396cb64 | 11 | #define BUF_SIZE 1024 |
sev2000 | 0:7d471396cb64 | 12 | |
sev2000 | 0:7d471396cb64 | 13 | #define DEVICE_ID 1 |
sev2000 | 0:7d471396cb64 | 14 | #define FA |
sev2000 | 0:7d471396cb64 | 15 | |
sev2000 | 0:7d471396cb64 | 16 | #define NB_CHAN 3 |
sev2000 | 0:7d471396cb64 | 17 | |
sev2000 | 0:7d471396cb64 | 18 | typedef struct { |
sev2000 | 0:7d471396cb64 | 19 | char deviceID; |
sev2000 | 0:7d471396cb64 | 20 | unsigned long timestamp; |
sev2000 | 0:7d471396cb64 | 21 | float hum1; |
sev2000 | 0:7d471396cb64 | 22 | float temp1; |
sev2000 | 0:7d471396cb64 | 23 | float hum2; |
sev2000 | 0:7d471396cb64 | 24 | float temp2; |
sev2000 | 0:7d471396cb64 | 25 | unsigned char pwm; |
sev2000 | 0:7d471396cb64 | 26 | int speed; |
sev2000 | 0:7d471396cb64 | 27 | }measure_t; |
sev2000 | 0:7d471396cb64 | 28 | |
sev2000 | 0:7d471396cb64 | 29 | typedef struct { |
sev2000 | 0:7d471396cb64 | 30 | int first; |
sev2000 | 0:7d471396cb64 | 31 | int prev; |
sev2000 | 0:7d471396cb64 | 32 | int last; |
sev2000 | 0:7d471396cb64 | 33 | measure_t data[BUF_SIZE]; |
sev2000 | 0:7d471396cb64 | 34 | }s_meas_t; |
sev2000 | 0:7d471396cb64 | 35 | |
sev2000 | 0:7d471396cb64 | 36 | typedef struct { |
sev2000 | 0:7d471396cb64 | 37 | int v; |
sev2000 | 0:7d471396cb64 | 38 | bool update; |
sev2000 | 0:7d471396cb64 | 39 | }pwm_t; |
sev2000 | 0:7d471396cb64 | 40 | |
sev2000 | 0:7d471396cb64 | 41 | int Init_Regul(); |
sev2000 | 0:7d471396cb64 | 42 | int Mesurement(measure_t *); |
sev2000 | 0:7d471396cb64 | 43 | int RegulPWM(measure_t *, pwm_t *); |
sev2000 | 0:7d471396cb64 | 44 | //int SendRcvData(NetworkStack *, s_meas_t *, pwm_t *); |
sev2000 | 0:7d471396cb64 | 45 | //int SendLoger(NetworkStack *, const char * ); |