Browse Source

base-station: Return the local time for ValueType::Time requests.

Mathias Gottschlag 5 years ago
parent
commit
9f462d41b3

+ 49
- 2
base-station/software/Cargo.lock View File

26
  "winapi 0.3.8",
26
  "winapi 0.3.8",
27
 ]
27
 ]
28
 
28
 
29
+[[package]]
30
+name = "autocfg"
31
+version = "1.0.0"
32
+source = "registry+https://github.com/rust-lang/crates.io-index"
33
+checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
34
+
29
 [[package]]
35
 [[package]]
30
 name = "base-station"
36
 name = "base-station"
31
 version = "0.1.0"
37
 version = "0.1.0"
32
 dependencies = [
38
 dependencies = [
39
+ "chrono",
33
  "embedded-hal",
40
  "embedded-hal",
34
  "embedded-nrf24l01",
41
  "embedded-nrf24l01",
35
  "env_logger",
42
  "env_logger",
92
 source = "registry+https://github.com/rust-lang/crates.io-index"
99
 source = "registry+https://github.com/rust-lang/crates.io-index"
93
 checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
100
 checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
94
 
101
 
102
+[[package]]
103
+name = "chrono"
104
+version = "0.4.11"
105
+source = "registry+https://github.com/rust-lang/crates.io-index"
106
+checksum = "80094f509cf8b5ae86a4966a39b3ff66cd7e2a3e594accec3743ff3fabeab5b2"
107
+dependencies = [
108
+ "num-integer",
109
+ "num-traits",
110
+ "time",
111
+]
112
+
95
 [[package]]
113
 [[package]]
96
 name = "crc16"
114
 name = "crc16"
97
 version = "0.4.0"
115
 version = "0.4.0"
338
 
356
 
339
 [[package]]
357
 [[package]]
340
 name = "libc"
358
 name = "libc"
341
-version = "0.2.68"
359
+version = "0.2.70"
342
 source = "registry+https://github.com/rust-lang/crates.io-index"
360
 source = "registry+https://github.com/rust-lang/crates.io-index"
343
-checksum = "dea0c0405123bba743ee3f91f49b1c7cfb684eef0da0a50110f758ccf24cdff0"
361
+checksum = "3baa92041a6fec78c687fa0cc2b3fae8884f743d672cf551bed1d6dac6988d0f"
344
 
362
 
345
 [[package]]
363
 [[package]]
346
 name = "linux-embedded-hal"
364
 name = "linux-embedded-hal"
479
  "void",
497
  "void",
480
 ]
498
 ]
481
 
499
 
500
+[[package]]
501
+name = "num-integer"
502
+version = "0.1.42"
503
+source = "registry+https://github.com/rust-lang/crates.io-index"
504
+checksum = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba"
505
+dependencies = [
506
+ "autocfg",
507
+ "num-traits",
508
+]
509
+
510
+[[package]]
511
+name = "num-traits"
512
+version = "0.2.11"
513
+source = "registry+https://github.com/rust-lang/crates.io-index"
514
+checksum = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096"
515
+dependencies = [
516
+ "autocfg",
517
+]
518
+
482
 [[package]]
519
 [[package]]
483
 name = "num_cpus"
520
 name = "num_cpus"
484
 version = "1.13.0"
521
 version = "1.13.0"
796
  "lazy_static",
833
  "lazy_static",
797
 ]
834
 ]
798
 
835
 
836
+[[package]]
837
+name = "time"
838
+version = "0.1.43"
839
+source = "registry+https://github.com/rust-lang/crates.io-index"
840
+checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
841
+dependencies = [
842
+ "libc",
843
+ "winapi 0.3.8",
844
+]
845
+
799
 [[package]]
846
 [[package]]
800
 name = "tokio"
847
 name = "tokio"
801
 version = "0.2.20"
848
 version = "0.2.20"

+ 1
- 0
base-station/software/Cargo.toml View File

22
 futures-util = "0.3.5"
22
 futures-util = "0.3.5"
23
 nb = "0.1.2"
23
 nb = "0.1.2"
24
 gpio-cdev = { git = "https://github.com/mgottschlag/gpio-cdev", branch = "tokio", features = [ "async-tokio" ] }
24
 gpio-cdev = { git = "https://github.com/mgottschlag/gpio-cdev", branch = "tokio", features = [ "async-tokio" ] }
25
+chrono = "0.4.11"
25
 
26
 
26
 [patch.crates-io]
27
 [patch.crates-io]
27
 sysfs_gpio = { git = "https://github.com/mgottschlag/rust-sysfs-gpio", branch = "new-futures" }
28
 sysfs_gpio = { git = "https://github.com/mgottschlag/rust-sysfs-gpio", branch = "new-futures" }

+ 9
- 2
base-station/software/src/main.rs View File

6
 use std::sync::Arc;
6
 use std::sync::Arc;
7
 use std::time::{Duration, Instant};
7
 use std::time::{Duration, Instant};
8
 
8
 
9
+use chrono::offset::Local;
9
 use log::{error, info};
10
 use log::{error, info};
10
-use protocol::{GetValues, Packet, Report, Value, Values};
11
+use protocol::{GetValues, Packet, Report, Value, ValueType, Values};
11
 use rand::{rngs::ThreadRng, Rng};
12
 use rand::{rngs::ThreadRng, Rng};
12
 use tokio::sync::Mutex;
13
 use tokio::sync::Mutex;
13
 use tokio::time::delay_for;
14
 use tokio::time::delay_for;
153
             values: [Value::Invalid; 8],
154
             values: [Value::Invalid; 8],
154
         };
155
         };
155
         for i in 0..count {
156
         for i in 0..count {
156
-            match self.current.get(request.location, request.types_[i]) {
157
+            if request.types[i] == ValueType::Time {
158
+                response.values[response.count as usize] =
159
+                    Value::Time(Local::now().naive_local().timestamp() as u64);
160
+                response.count += 1;
161
+                continue;
162
+            }
163
+            match self.current.get(request.location, request.types[i]) {
157
                 Some(value) => {
164
                 Some(value) => {
158
                     // During deserialization, we made sure that count can never be larger than 7.
165
                     // During deserialization, we made sure that count can never be larger than 7.
159
                     response.values[response.count as usize] = value;
166
                     response.values[response.count as usize] = value;

Loading…
Cancel
Save