Skip to content

Instantly share code, notes, and snippets.

@alevy
Last active August 17, 2017 22:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alevy/a274981a29ffc00230aa16101ee0b89f to your computer and use it in GitHub Desktop.
Save alevy/a274981a29ffc00230aa16101ee0b89f to your computer and use it in GitHub Desktop.
Rust Tock app that reports sensor data to `ble-env-sense` service
#![feature(alloc)]
#![no_std]
extern crate alloc;
extern crate tock;
use alloc::fmt::Write;
use tock::console::Console;
use tock::ipc::ble_ess::{self, ReadingType};
use tock::sensors::*;
#[inline(never)]
fn main() {
let mut console = Console::new();
write!(&mut console, "Starting BLE ESS\n").unwrap();
let mut ess = match ble_ess::connect() {
Ok(ess) => ess,
_ => {
write!(&mut console, "BLE IPC Service not installed\n").unwrap();
return
}
};
write!(&mut console, "Found BLE IPC Service\n").unwrap();
let mut humidity = HumiditySensor;
let mut temperature = TemperatureSensor;
let mut light = AmbientLightSensor;
loop {
// Temperature
let temp = temperature.read();
write!(&mut console, "Temperature: {}\n", temp).unwrap();
if let Err(_) = ess.set_reading(ReadingType::Temperature, temp) {
write!(&mut console, "Failed to set temperature\n").unwrap_or(());
}
// Light
let lx = light.read();
write!(&mut console, "Light: {}\n", lx).unwrap();
if let Err(_) = ess.set_reading(ReadingType::Light, lx) {
write!(&mut console, "Failed to set temperature\n").unwrap_or(());
}
// Humidity
let humid = humidity.read();
write!(&mut console, "Humidity: {}\n", humid).unwrap();
if let Err(_) = ess.set_reading(ReadingType::Humidity, humid) {
write!(&mut console, "Failed to set temperature\n").unwrap_or(());
}
tock::timer::delay_ms(5000);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment