aboutsummaryrefslogtreecommitdiff
path: root/trygvisio_soil_moisture.ino
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2015-07-23 15:37:39 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2015-07-23 15:37:39 +0200
commitdea9cb49271631d4def70d21db42a85d1d58f269 (patch)
tree77f8b281190818d0bde23c2535d845abe6d98258 /trygvisio_soil_moisture.ino
parent678dfb7e93f1d613fb9a513d60a685d5e3c1c3b3 (diff)
downloadtrygvisio_soil_moisture-dea9cb49271631d4def70d21db42a85d1d58f269.tar.gz
trygvisio_soil_moisture-dea9cb49271631d4def70d21db42a85d1d58f269.tar.bz2
trygvisio_soil_moisture-dea9cb49271631d4def70d21db42a85d1d58f269.tar.xz
trygvisio_soil_moisture-dea9cb49271631d4def70d21db42a85d1d58f269.zip
o Fixing a bug where the reponse code wasn't properly set.
Diffstat (limited to 'trygvisio_soil_moisture.ino')
-rw-r--r--trygvisio_soil_moisture.ino35
1 files changed, 26 insertions, 9 deletions
diff --git a/trygvisio_soil_moisture.ino b/trygvisio_soil_moisture.ino
index 8185754..729f5da 100644
--- a/trygvisio_soil_moisture.ino
+++ b/trygvisio_soil_moisture.ino
@@ -225,8 +225,8 @@ static void aci_loop() {
case ACI_EVT_DATA_RECEIVED:
pipe_number = aci_evt->params.data_received.rx_data.pipe_number;
- Serial.print(F("ACI_EVT_DATA_RECEIVED: pipe_number="));
- Serial.println(pipe_number, DEC);
+// Serial.print(F("ACI_EVT_DATA_RECEIVED: pipe_number="));
+// Serial.println(pipe_number, DEC);
if (pipe_number == pipe_rx) {
on_soil_moisture_ctrl(aci_evt->params.data_received.rx_data.aci_data, aci_evt->len);
@@ -352,12 +352,14 @@ void loop() {
sm_loop();
-#ifdef SM_DEBUG
+#ifdef USE_LOW_POWER_MODE == 1
+#ifdef SM_DEBUG == 1
Serial.println(F("Sleeping..."));
Serial.flush();
#endif // SM_DEBUG
go_to_sleep();
+#endif // USE_LOW_POWER_MODE
}
static void show_pipes() {
@@ -425,14 +427,29 @@ void notify_soil_moisture(const struct sm_res& res, uint8_t body_len) {
// This should probably be an explicit part of the API, but for now it makes it easier to implement a synchronous interface.
lib_aci_set_local_data(&aci_state, pipe_set, (uint8_t *)&res, len);
- if (available && aci_state.data_credit_available > 0) {
- boolean sent = lib_aci_send_data(pipe_tx, data, len);
- if (sent) {
- aci_state.data_credit_available--;
+ // There is no need to lod messages that won't be sent.
+ if (!available) {
+ return;
+ }
#if SM_DEBUG == 1
- write_res(res);
+Serial.println("write_res");
+ write_res(res);
+#endif
+
+ if (aci_state.data_credit_available = 0) {
+#if SM_DEBUG == 1
+ Serial.println("Not enough credits to send notification.");
+#endif
+ return;
+ }
+
+ boolean sent = lib_aci_send_data(pipe_tx, data, len);
+ if (sent) {
+ aci_state.data_credit_available--;
+ } else {
+#if SM_DEBUG == 1
+ Serial.println("Sending failed");
#endif
- }
}
}