Internship at Sentilla. Chris Merlin March 08 - June 08

Size: px
Start display at page:

Download "Internship at Sentilla. Chris Merlin March 08 - June 08"

Transcription

1 Internship at Sentilla Chris Merlin March 08 - June 08

2 Overview The Sentilla Co. and The Product The smallest platform to carry a JVM Particularities of Coding in Java Application Engineering

3 Sentilla Formerly Moteiv (2003) o Moteiv was focused on hardware (products: tmote-sky, tmote-invent, etc.) o Moteiv used TinyOS Sentilla (2007) now oriented toward software o Adopted Java Simple programming language 6 million Java programmers in the world Small team Venture-backed Company: Onset, Claremont Creek

4 The Sentilla Product: Sentilla Work Focus of Sentilla: to provide Software for quick Pervasive Computing deployments using Java IDE (Sentilla Work): Lets programmers write Java Code Comes with help and tutorials Allows to burn motes with firmware Has to be understood as Windows of WSN: Provides APIs, Drivers, libraries Client can run Java applets to interface with Internet or other elements of computer Manages applications Users write applications for their needs

5 Firmware / MAC MAC: Part of firmware: cannot be changed MAC is Low-Power-Listening scheme: value of LPL interval fixed, but can be chosen to be one of 3 values Passphrase for data encryption: slows communications by factor of 3-4 Communication channel fixed makes subnetwork

6 Overview The Sentilla Co. and The Product The smallest platform to carry a JVM Particularities of Coding in Java Application Engineering

7 The JVM Core based on Ti MSP430 o 16bit, 8MHz CPU o 48K flash on CPU o 10K RAM o 1MB external flash Runs a Java Virtual Machine Now CLDC 1.0 compliant

8 Advantages of Java Object-Oriented programming language: o Particularly well adapted to wireless sensor nodes o Allows to instantiate different objects depending on the mote ID public static void motemain() { long id = [...]; if (id == mote1_id) new app1(); else new app2(); now, code for sender and receiver can be clearly separated

9 (...2) Advantages of Java import com.sentilla.io.*; import com.sentilla.system.*; import javax.measure.*; public class SensorApp { public static class SensorMessage implements Serializable { nx_uint16_t interval; /* Samping period. */ Compact programming language public long address; public Measurable<Temperature> value; public static void motemain() { Sensor<Temperature> temp = SensorDriver.create( mcutemp, Temperature.class); Sender sender = SenderDriver.create( collect ); SensorMessage msg = new SensorMessage(); msg.address = PropertyDriver.open("mac64").readLong(); while (true) { msg.value = temp.read(); if (msg.value.doublevalue(si.celsius) > (double)50) { sender.send( msg ); try { Thread.sleep(1000); catch (Exception e) { e.printstacktrace() #ifndef MULTIHOP_OSCILLOSCOPE_H #define MULTIHOP_OSCILLOSCOPE_H enum { /* Number of readings per message. If you increase this, you may have to increase the message_t size. */ NREADINGS = 5, DEFAULT_INTERVAL = 1024, AM_OSCILLOSCOPE = 0x93 ; typedef nx_struct oscilloscope { nx_uint16_t version; /* Version of the interval. */ nx_uint16_t id; /* Mote id of sending mote. */ nx_uint16_t count; /* The readings are samples count * NREADINGS onwards */ nx_uint16_t readings[nreadings]; oscilloscope_t; #endif configuration MultihopOscilloscopeAppC { implementation { components MainC, MultihopOscilloscopeC, LedsC, new TimerMilliC(), new DemoSensorC() as Sensor; MultihopOscilloscopeC.Boot -> MainC; MultihopOscilloscopeC.Timer -> TimerMilliC; MultihopOscilloscopeC.Read -> Sensor; MultihopOscilloscopeC.Leds -> LedsC; components CollectionC as Collector, // Collection layer ActiveMessageC, // AM layer new CollectionSenderC(AM_OSCILLOSCOPE), // Sends multihop RF SerialActiveMessageC, // Serial messaging new SerialAMSenderC(AM_OSCILLOSCOPE); // Sends to the serial port MultihopOscilloscopeC.RadioControl -> ActiveMessageC; MultihopOscilloscopeC.SerialControl -> SerialActiveMessageC; MultihopOscilloscopeC.RoutingControl -> Collector; MultihopOscilloscopeC.Send -> CollectionSenderC; MultihopOscilloscopeC.SerialSend -> SerialAMSenderC.AMSend; MultihopOscilloscopeC.Snoop -> Collector.Snoop[AM_OSCILLOSCOPE]; MultihopOscilloscopeC.Receive -> Collector.Receive[AM_OSCILLOSCOPE]; MultihopOscilloscopeC.RootControl -> Collector; components new PoolC(message_t, 10) as UARTMessagePoolP, new QueueC(message_t*, 10) as UARTQueueP; MultihopOscilloscopeC.UARTMessagePool -> UARTMessagePoolP; MultihopOscilloscopeC.UARTQueue -> UARTQueueP; #include "Timer.h" #include "MultihopOscilloscope.h" module MultihopOscilloscopeC { uses { // Interfaces for initialization: interface Boot; interface SplitControl as RadioControl; interface SplitControl as SerialControl; interface StdControl as RoutingControl; // Interfaces for communication, multihop and serial: interface Send; interface Receive as Snoop; interface Receive; interface AMSend as SerialSend; interface CollectionPacket; interface RootControl; interface Queue<message_t *> as UARTQueue; interface Pool<message_t> as UARTMessagePool; // Miscalleny: interface Timer<TMilli>; interface Read<uint16_t>; interface Leds; implementation { task void uartsendtask(); static void starttimer(); static void fatal_problem(); static void report_problem(); static void report_sent(); static void report_received(); uint8_t uartlen; message_t sendbuf; message_t uartbuf; bool sendbusy=false, uartbusy=false; oscilloscope_t local; uint8_t reading; /* 0 to NREADINGS */ bool suppress_count_change; event void Boot.booted() { local.interval = DEFAULT_INTERVAL; local.id = TOS_NODE_ID; local.version = 0; // Beginning our initialization phases: if (call RadioControl.start()!= SUCCESS) fatal_problem(); if (call RoutingControl.start()!= SUCCESS) fatal_problem(); event void RadioControl.startDone(error_t error) { if (error!= SUCCESS) fatal_problem(); if (sizeof(local) > call Send.maxPayloadLength()) fatal_problem(); if (call SerialControl.start()!= SUCCESS) fatal_problem(); event void SerialControl.startDone(error_t error) { if (error!= SUCCESS) fatal_problem(); // This is how to set yourself as a root to the collection layer: if (local.id % 500 == 0) call RootControl.setRoot(); starttimer(); static void starttimer() { if (call Timer.isRunning()) call Timer.stop(); call Timer.startPeriodic(local.interval); reading = 0; event void RadioControl.stopDone(error_t error) { event void SerialControl.stopDone(error_t error) { event message_t* Receive.receive(message_t* msg, void *payload, uint8_t len) { oscilloscope_t* in = (oscilloscope_t*)payload; oscilloscope_t* out; if (uartbusy == FALSE) { out = (oscilloscope_t*)call SerialSend.getPayload(&uartbuf); if (len!= sizeof(oscilloscope_t)) { return msg; else { memcpy(out, in, sizeof(oscilloscope_t)); uartlen = sizeof(oscilloscope_t); post uartsendtask(); else { // The UART is busy; queue up messages and service them when the // UART becomes free. message_t *newmsg = call UARTMessagePool.get(); if (newmsg == NULL) { // drop the message on the floor if we run out of queue space. report_problem(); return msg; //Prepare message to be sent over the uart out = (oscilloscope_t*)call SerialSend.getPayload(newmsg); memcpy(out, in, sizeof(oscilloscope_t)); if (call UARTQueue.enqueue(newmsg)!= SUCCESS) { call UARTMessagePool.put(newmsg); fatal_problem(); return msg; return msg; task void uartsendtask() { if (call SerialSend.send(0xffff, &uartbuf, uartlen)!= SUCCESS) { report_problem(); else { uartbusy = TRUE; event void SerialSend.sendDone(message_t *msg, error_t error) { uartbusy = FALSE; if (call UARTQueue.empty() == FALSE) { message_t *queuemsg = call UARTQueue.dequeue(); if (queuemsg == NULL) { fatal_problem(); return; memcpy(&uartbuf, queuemsg, sizeof(message_t)); if (call UARTMessagePool.put(queuemsg)!= SUCCESS) { fatal_problem(); return; post uartsendtask(); event message_t* Snoop.receive(message_t* msg, void* payload, uint8_t len) { oscilloscope_t *omsg = payload; report_received(); // If we receive a newer version, update our interval. if (omsg->version > local.version) { local.version = omsg->version; local.interval = omsg->interval; starttimer(); // If we hear from a future count, jump ahead but suppress our own // change. if (omsg->count > local.count) { local.count = omsg->count; suppress_count_change = TRUE; return msg; event void Timer.fired() { if (reading == NREADINGS) { if (!sendbusy) { oscilloscope_t *o = (oscilloscope_t *)call Send.getPayload(&sendbuf); memcpy(o, &local, sizeof(local)); if (call Send.send(&sendbuf, sizeof(local)) == SUCCESS) sendbusy = TRUE; else report_problem(); reading = 0; /* Part 2 of cheap "time sync": increment our count if we didn't jump ahead. */ if (!suppress_count_change) local.count++; suppress_count_change = FALSE; if (call Read.read()!= SUCCESS) fatal_problem(); event void Send.sendDone(message_t* msg, error_t error) { if (error == SUCCESS) report_sent(); else report_problem(); sendbusy = FALSE; event void Read.readDone(error_t result, uint16_t data) { if (result!= SUCCESS) { data = 0xffff; report_problem(); local.readings[reading++] = data; // Use LEDs to report various status issues. static void fatal_problem() { call Leds.led0On(); call Leds.led1On(); call Leds.led2On(); call Timer.stop(); static void report_problem() { call Leds.led0Toggle(); static void report_sent() { call Leds.led1Toggle(); static void report_received() { call Leds.led2Toggle();

10 (...3) Advantages of Java Dynamic memory allocation o Garbage collector o Supported Objects: Strings Arrays of variable size Native code still used for interfacing with hardware Multi-threading 6,000,000+ Java Programmers in the World (200,000 TinyOS)

11 Disadvantages of Java Slower than native code (4 orders of magnitude) I measured 17ms to toggle LEDs! JVM takes a large part of the available resources Forces to use swapping: slow

12 Overview The Sentilla Co. and The Product The smallest platform to carry a JVM Particularities of Coding in Java Application Engineering

13 Driver Instantiation Since OO programming language, every layer of the stack becomes an Object To send a packet: instantiate a SenderDriver as such: public class Message Implements Serializable { public float data; Sender sender = SenderDriver.create( local ); Message msg = new Message(); sender.send(msg); Instantiate Receiver, Sender, Leds, messages, DigitalPins, VoltageAdc, etc.

14 Interrupts Java offers a relatively simple way to handle events/interrupts Need to instantiate an InterruptPin (for instance) Two solutions: Invoke blocking calls: the thread hangs until specified timeout or event completed pin.block().wait(timeout); Blocking call stops thread may need to create other threads for rest of program If loop cannot be stopped, keep checking whether event has happened or not pin.isdone();

15 ( 2) Interrupts Receiver has a blocking call: can specify timeout after which thread continues if no packet received (ACKs) InterruptPin s can specify rising / falling edge, or either Go hand-in-hand with atomicity concerns

16 Atomicity Handled very differently than in TinyOS x.x No tasks No synchronous or asynchronous events No events Use of lock (a mutex): Declare an Object that will be your mutex Enter a Synchronized block; locks mutex The code within Synchronized blocks over the same mutex is mutually exclusive At end of block, release mutex (convention)

17 Sample Code public class LeftMonitorThread extends Thread{ public LeftMonitorThread(){ msg.countin = 0; msg.countout = 0; public void run(){ int direction; while(true){ direction = 0; leftbeam.edge(false, true); synchronized(lock){ lasttimelefttripped = ava.lang.system.currenttimemillis(); lock.notifyall(); Thread.sleep(100); if (!leftbeam.read()){ synchronized(lock){ lasttimelefttripped = 0; lock.notifyall(); If other beam broken less than 700ms ago: person else{ synchronized(lock){ if (lasttimelefttripped - lasttimerighttripped < 700){ msg.countout++; lasttimelefttripped = 0; direction = -1; lock.notifyall(); displayleds(direction, (short)2, (direction == 0? false : true)); Probably was nothing (a fly)

18 Tricks and Customs Coding in Java for extremely small platforms unusual Same ideas apply as when first cell phones appeared and were running Java Do not keep re-instantiating / Reuse objects Take allocations out of loop Have as many blocking commands as possible Avoid loop that keeps checking status (keeps CPU in sleep mode) Threads are expensive (2) Keep number of classes low to reduce look-up Use fewer LEDs (3mA per LED) / blink them Avoid frequent packets Use raw values whenever possible (for accelerometer, etc.)

19 Debugging Java throws Exceptions when normal flow of execution is interrupted Exceptions are propagated and appear on console The JCreate has 8LEDs Problem: native code cannot be debugged without help of JTag

20 Overview The Sentilla Co. and The Product The smallest platform to carry a JVM Particularities of Coding in Java Application Engineering

21 Application Engineering Consists in a team of 3 engineers The team is the service side of the business model Writing applications for the office to showcase Developing applications for conferences Providing services for customer s specific needs (energy scavenging, deployment challenges, etc.) Developed JCreate as a prototyping platform: Has a MSP430 based core Has an accelerometer 8 LEDs 2 AAA batteries

22 The JCreate Accelerometer 3-axis accelerometer built in JCreate Formerly, only 1 channel of ADC could be sampled before return statement Code for multiple channel samples: o Sequential mode o Channels to sample placed in array of variable size (in TinyOS!) o Values returned in buffer of variable size For 3 read operations, time went from 30ms to 10ms

23 Java Accelerometer Driver Instantiates ADC pins (constructor argument is pin number), allocates memory Starts the Accelerometer chip Sets sensitivity Keeps track of monitored axis Gets raw values (4B int) x is raw value Voltage = x >> 20 (or division by )

24 Applications: POV Persistence of Vision Display a sentence onto mote s LEDs by moving JCreate back and forth Accelerometer starts display sequence according to hand position

25 Java One Keynote Count people in and out of rooms Emitter: o 2 IR beams sent by emitter (9V individual power) o 36KHz and 56kHz to discriminate between beams o Brought power from 3.5W to 1.75W Receiver: o Mote powers and reads two IR receivers o Depending on which beam cut first: direction of person walking known o Uses interrupt pins: CPU waits for interrupt (sleeps) => low energy use

26 ( 2) Java One Keynote Monitor humidity, light and temperature Use of collect protocol Many-to-one Routing over several hops Every node sends its data Buggy protocol Information reported to website: data displayed over time

27 Questions and Answers

Wireless Systems Laboratory 4 November 2013

Wireless Systems Laboratory 4 November 2013 Wireless Systems Laboratory 4 November 2013 A. Cammarano, A.Capossele, D. Spenza Contacts Cammarano: Capossele: Spenza: cammarano@di.uniroma1.it capossele@di.uniroma1.it spenza@di.uniroma1.it Tel: 06-49918430

More information

Politecnico di Milano Advanced Network Technologies Laboratory. Internet of Things. TinyOS Programming and TOSSIM (and Cooja)

Politecnico di Milano Advanced Network Technologies Laboratory. Internet of Things. TinyOS Programming and TOSSIM (and Cooja) Politecnico di Milano Advanced Network Technologies Laboratory Internet of Things TinyOS Programming and TOSSIM (and Cooja) 20 April 2015 Agenda o Playing with TinyOS n Programming and components n Blink

More information

Politecnico di Milano Advanced Network Technologies Laboratory. Internet of Things. TinyOS Programming and TOSSIM

Politecnico di Milano Advanced Network Technologies Laboratory. Internet of Things. TinyOS Programming and TOSSIM Politecnico di Milano Advanced Network Technologies Laboratory Internet of Things TinyOS Programming and TOSSIM 11 April 2011 Agenda Playing with TinyOS Programming and components Blink Application Using

More information

Politecnico di Milano Advanced Network Technologies Laboratory. Internet of Things. TinyOS Programming and TOSSIM (and Cooja)

Politecnico di Milano Advanced Network Technologies Laboratory. Internet of Things. TinyOS Programming and TOSSIM (and Cooja) Politecnico di Milano Advanced Network Technologies Laboratory Internet of Things TinyOS Programming and TOSSIM (and Cooja) 19 March 2018 Agenda Playing with TinyOS Programming and components Blink Application

More information

Politecnico di Milano Advanced Network Technologies Laboratory. TinyOS

Politecnico di Milano Advanced Network Technologies Laboratory. TinyOS Politecnico di Milano Advanced Network Technologies Laboratory TinyOS Politecnico di Milano Advanced Network Technologies Laboratory A Bit of Context on WSNs Technology, Applications and Sensor Nodes WSN

More information

WSN Programming. Introduction. Olaf Landsiedel. Programming WSNs. ! What do we need to write software for WSNs?! Programming language

WSN Programming. Introduction. Olaf Landsiedel. Programming WSNs. ! What do we need to write software for WSNs?! Programming language WSN Programming Introduction Lecture 2 Olaf Landsiedel Programming WSNs! What do we need to write software for WSNs?! Programming language " With compiler, etc.! OS / runtime libraries " Access to system

More information

WSN Programming. Introduction. Olaf Landsiedel

WSN Programming. Introduction. Olaf Landsiedel WSN Programming Introduction Olaf Landsiedel Programming WSNs What do we need to write software for WSNs? (or: for any system, like your laptop, cell phone?) Programming language With compiler, etc. OS

More information

Introduction to TinyOS

Introduction to TinyOS Fakultät Informatik Institut für Systemarchitektur Professur Rechnernetze Introduction to TinyOS Jianjun Wen 21.04.2016 Outline Hardware Platforms Introduction to TinyOS Environment Setup Project of This

More information

Collection. Abstract. 1. Introduction. Note. TEP: 119 Net2 Working Group

Collection. Abstract. 1. Introduction. Note. TEP: 119 Net2 Working Group Collection TEP: 119 Group: Net2 Working Group Type: Documentary Status: Final TinyOS-Version: > 2.1 Author: Rodrigo Fonseca, Omprakash Gnawali, Kyle Jamieson, and Philip Levis Draft-Created: 09-Feb-2006

More information

ANEXO D CÓDIGO DE LA APLICACIÓN. El contenido de los archivos de código fuente almacenados en el directorio Nodo desconocido es el siguiente:

ANEXO D CÓDIGO DE LA APLICACIÓN. El contenido de los archivos de código fuente almacenados en el directorio Nodo desconocido es el siguiente: ANEXO D CÓDIGO DE LA APLICACIÓN El contenido de los archivos de código fuente almacenados en el directorio Nodo desconocido es el siguiente: APPLICATIONDEFINITIONS.H #ifndef APPLICATIONDEFINITIONS_H #define

More information

TinyOS Tutorial. Greg Hackmann CSE 521S Fall 2010

TinyOS Tutorial. Greg Hackmann CSE 521S Fall 2010 TinyOS Tutorial Greg Hackmann CSE 521S Fall 2010 Outline Installing TinyOS and Building Your First App Hardware Primer Basic nesc Syntax Advanced nesc Syntax Network Communication Sensor Data Acquisition

More information

Wireless Sensor Networks (WSN)

Wireless Sensor Networks (WSN) Wireless Sensor Networks (WSN) Operating Systems M. Schölzel Operating System Tasks Traditional OS Controlling and protecting access to resources (memory, I/O, computing resources) managing their allocation

More information

Introduction to Programming Motes

Introduction to Programming Motes Introduction to Programming Motes Mohamed M. El Wakil http://mohamed.elwakil.net mohamed.elwakil@wmich.edu Wireless Sensornets (WiSe) Laboratory Department of Computer Science Western Michigan University

More information

The Emergence of Networking Abstractions and Techniques in TinyOS

The Emergence of Networking Abstractions and Techniques in TinyOS The Emergence of Networking Abstractions and Techniques in TinyOS CS295-1 Paper Presentation Mert Akdere 10.12.2005 Outline Problem Statement & Motivation Background Information TinyOS HW Platforms Sample

More information

Complete Network Embedded System

Complete Network Embedded System Wireless Embedded Systems and Networking Foundations of IP-based Ubiquitous Sensor Networks TinyOS 2.0 Design and Application Services David E. Culler University of California, Berkeley Arch Rock Corp.

More information

nesc Prof. Chenyang Lu How should network msg be handled? Too much memory for buffering and threads

nesc Prof. Chenyang Lu How should network msg be handled? Too much memory for buffering and threads nesc Prof. Chenyang Lu CSE 521S 1 How should network msg be handled? Socket/TCP/IP? Too much memory for buffering and threads Data buffered in network stack until application threads read it Application

More information

Wireless Sensor Networks

Wireless Sensor Networks Wireless Sensor Networks Interface Lecturer: Junseok KIM http://usn.konkuk.ac.kr/~jskim Blink Example If a uses a interface, it can call the interface s commands and must implement handlers for the interface

More information

Enabling Networked Sensors

Enabling Networked Sensors Politecnico di Milano Advanced Network Technologies Laboratory Enabling Networked Sensors A Primer on TinyOS Ing. Matteo Cesana Office: DEI 3 Floor Room 335 Email: cesana@elet.polimi.it Phone: 0223993695

More information

RF Networking With MSP430 & the ez430-rf2500 Session 2 Miguel Morales, MSP430 Applications 6/5/2008 1

RF Networking With MSP430 & the ez430-rf2500 Session 2 Miguel Morales, MSP430 Applications 6/5/2008 1 RF Networking With MSP430 & the ez430-rf2500 Session 2 Miguel Morales, MSP430 Applications 6/5/2008 1 Agenda Recap of Session 1 Hardware description Session 2 Lab Overview Lab 2.1 Tilt & Ambient Noise

More information

nesc Ø Programming language for TinyOS and applications Ø Support TinyOS components Ø Whole-program analysis at compile time Ø Static language

nesc Ø Programming language for TinyOS and applications Ø Support TinyOS components Ø Whole-program analysis at compile time Ø Static language nesc Ø Programming language for TinyOS and applications Ø Support TinyOS components Ø Whole-program analysis at compile time q Improve robustness: detect race conditions q Optimization: function inlining

More information

INTRODUCTION TO WIRELESS SENSOR NETWORKS. CHAPTER 2: ANATOMY OF A SENSOR NODE Anna Förster

INTRODUCTION TO WIRELESS SENSOR NETWORKS. CHAPTER 2: ANATOMY OF A SENSOR NODE Anna Förster INTRODUCTION TO WIRELESS SENSOR NETWORKS CHAPTER 2: ANATOMY OF A SENSOR NODE Anna Förster OVERVIEW 1. Hardware components 2. Power Consumption 3. Operating Systems and Concepts 1. Memory Management 2.

More information

Wireless Embedded Systems and Networking. How to get TinyOS open source dist.

Wireless Embedded Systems and Networking. How to get TinyOS open source dist. Wireless Embedded Systems and Networking Lab Day 5: Part 1: TinyOS Programming on Open Source Distribution Jaein Jeong University of California, Berkeley 1 How to get TinyOS open source dist. Latest version

More information

Integrating Concurrency Control and Energy Management in Device Drivers. Chenyang Lu

Integrating Concurrency Control and Energy Management in Device Drivers. Chenyang Lu Integrating Concurrency Control and Energy Management in Device Drivers Chenyang Lu Overview Ø Concurrency Control: q Concurrency of I/O operations alone, not of threads in general q Synchronous vs. Asynchronous

More information

A Virtual Machine-Based Programming Environment for Rapid Sensor Application Development

A Virtual Machine-Based Programming Environment for Rapid Sensor Application Development A Virtual Machine-Based Programming Environment for Rapid Sensor Application Development Jui-Nan Lin and Jiun-Long Huang Department of Computer Science National Chiao Tung University Hsinchu, Taiwan, ROC

More information

Inside the Garbage Collector

Inside the Garbage Collector Inside the Garbage Collector Agenda Applications and Resources The Managed Heap Mark and Compact Generations Non-Memory Resources Finalization Hindering the GC Helping the GC 2 Applications and Resources

More information

CM5000 DATASHEET v0.1

CM5000 DATASHEET v0.1 CM5000 DATASHEET - 2 - http://www.advanticsys.com/cm5000.html v0.1 Table of Contents 1. INTRODUCTION... 5 2. HARDWARE CHARACTERISTICS... 6 2.1 CM5000 DIAGRAMS... 6 2.2 MICROCONTROLLER DESCRIPTION - TI

More information

Sensor Networks. Part 3: TinyOS. CATT Short Course, March 11, 2005 Mark Coates Mike Rabbat. Operating Systems 101

Sensor Networks. Part 3: TinyOS. CATT Short Course, March 11, 2005 Mark Coates Mike Rabbat. Operating Systems 101 Sensor Networks Part 3: TinyOS CATT Short Course, March 11, 2005 Mark Coates Mike Rabbat 1 Operating Systems 101 operating system (äp ǝr āt ing sis tǝm) n. 1 software that controls the operation of a computer

More information

Parallel Programming Languages COMP360

Parallel Programming Languages COMP360 Parallel Programming Languages COMP360 The way the processor industry is going, is to add more and more cores, but nobody knows how to program those things. I mean, two, yeah; four, not really; eight,

More information

Integrating Concurrency Control and Energy Management in Device Drivers

Integrating Concurrency Control and Energy Management in Device Drivers Integrating Concurrency Control and Energy Management in Device Drivers Kevin Klues, Vlado Handziski, Chenyang Lu, Adam Wolisz, David Culler, David Gay, and Philip Levis Overview Concurrency Control: Concurrency

More information

CS 31: Introduction to Computer Systems : Threads & Synchronization April 16-18, 2019

CS 31: Introduction to Computer Systems : Threads & Synchronization April 16-18, 2019 CS 31: Introduction to Computer Systems 22-23: Threads & Synchronization April 16-18, 2019 Making Programs Run Faster We all like how fast computers are In the old days (1980 s - 2005): Algorithm too slow?

More information

ECE 462 Object-Oriented Programming using C++ and Java. Scheduling and Critical Section

ECE 462 Object-Oriented Programming using C++ and Java. Scheduling and Critical Section ECE 462 Object-Oriented Programming g using C++ and Java Scheduling and Critical Section Yung-Hsiang Lu yunglu@purdue.edu d YHL Scheduling and Critical Section 1 Thread States born terminated ready running

More information

Middleware for Wireless Sensor Networks: An Outlook

Middleware for Wireless Sensor Networks: An Outlook Middleware for Wireless Sensor Networks: An Outlook Gian Pietro Picco disi.unitn.it/~picco d3s.disi.unitn.it Department of Information Engineering & Computer Science University of Trento, Italy joint work

More information

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this

More information

Mobile and Ubiquitous Computing TinyOS application example. Niki Trigoni

Mobile and Ubiquitous Computing TinyOS application example. Niki Trigoni Mobile and Ubiquitous Computing TinyOS application example Niki Trigoni www.dcs.bbk.ac.uk/~niki niki@dcs.bbk.ac.uk Application Consider an application with the following functionality: The gateway node

More information

CMSC 433 Programming Language Technologies and Paradigms. Concurrency

CMSC 433 Programming Language Technologies and Paradigms. Concurrency CMSC 433 Programming Language Technologies and Paradigms Concurrency What is Concurrency? Simple definition Sequential programs have one thread of control Concurrent programs have many Concurrency vs.

More information

EMBEDDED SYSTEMS WITH ROBOTICS AND SENSORS USING ERLANG

EMBEDDED SYSTEMS WITH ROBOTICS AND SENSORS USING ERLANG EMBEDDED SYSTEMS WITH ROBOTICS AND SENSORS USING ERLANG Adam Lindberg github.com/eproxus HARDWARE COMPONENTS SOFTWARE FUTURE Boot, Serial console, Erlang shell DEMO THE GRISP BOARD SPECS Hardware & specifications

More information

EE445L Fall 2014 Final Version A Page 1 of 7

EE445L Fall 2014 Final Version A Page 1 of 7 EE445L Fall 2014 Final Version A Page 1 of 7 Jonathan W. Valvano First: Last: This is the closed book section. You must put your answers in the boxes. When you are done, you turn in the closed-book part

More information

Process Management And Synchronization

Process Management And Synchronization Process Management And Synchronization In a single processor multiprogramming system the processor switches between the various jobs until to finish the execution of all jobs. These jobs will share the

More information

Monitors; Software Transactional Memory

Monitors; Software Transactional Memory Monitors; Software Transactional Memory Parallel and Distributed Computing Department of Computer Science and Engineering (DEI) Instituto Superior Técnico March 17, 2016 CPD (DEI / IST) Parallel and Distributed

More information

AIM: To create a project for implement a wireless communication protocol on an embedded system- ZigBee.

AIM: To create a project for implement a wireless communication protocol on an embedded system- ZigBee. AIM: To create a project for implement a wireless communication protocol on an embedded system- ZigBee. Introduction ZigBee is one of the Advanced Wireless Technology and CC2430 is the first single-chip

More information

Virtual Machine Design

Virtual Machine Design Virtual Machine Design Lecture 4: Multithreading and Synchronization Antero Taivalsaari September 2003 Session #2026: J2MEPlatform, Connected Limited Device Configuration (CLDC) Lecture Goals Give an overview

More information

ADHOC ROUTING BASED DATA COLLECTION APPLICATION IN WIRELESS SENSOR NETWORKS MALLIKARJUNA RAO PINJALA B.E, OSMANIA UNIVERSITY, INDIA, 2004 A REPORT

ADHOC ROUTING BASED DATA COLLECTION APPLICATION IN WIRELESS SENSOR NETWORKS MALLIKARJUNA RAO PINJALA B.E, OSMANIA UNIVERSITY, INDIA, 2004 A REPORT ADHOC ROUTING BASED DATA COLLECTION APPLICATION IN WIRELESS SENSOR NETWORKS by MALLIKARJUNA RAO PINJALA B.E, OSMANIA UNIVERSITY, INDIA, 2004 A REPORT Submitted in partial fulfillment of the requirements

More information

Distributed Pervasive Systems

Distributed Pervasive Systems Distributed Pervasive Systems CS677 Guest Lecture Tian Guo Lecture 26, page 1 Outline Distributed Pervasive Systems Popular Application domains Sensor nodes and networks Energy in Distributed Systems (Green

More information

Indriya_DP_03A14. Features. Block Diagram. XBEE based Wireless Sensor Network development platform

Indriya_DP_03A14. Features. Block Diagram. XBEE based Wireless Sensor Network development platform Indriya TM is a hardware development environment for building ambient intelligence based wireless sensor network applications. Features Simple, pervasive & low power 8-bit microcontroller core with low-power

More information

Introduction to Visual Basic and Visual C++ Introduction to Java. JDK Editions. Overview. Lesson 13. Overview

Introduction to Visual Basic and Visual C++ Introduction to Java. JDK Editions. Overview. Lesson 13. Overview Introduction to Visual Basic and Visual C++ Introduction to Java Lesson 13 Overview I154-1-A A @ Peter Lo 2010 1 I154-1-A A @ Peter Lo 2010 2 Overview JDK Editions Before you can write and run the simple

More information

TinyOS 2.x. Hongwei Zhang

TinyOS 2.x. Hongwei Zhang TinyOS 2.x Hongwei Zhang http://www.cs.wayne.edu/~hzhang Adapted from the IPSN 09 tutorial by Stephen Dawson-Haggerty, Omprakash Gnawali, David Gay, Philip Levis, Răzvan Musăloiu-E., Kevin Klues, and John

More information

A VIRTUALLAB APPROACH FOR WIRELESS SENSOR MOTES AND WIRELESS SENSOR NETWORKS

A VIRTUALLAB APPROACH FOR WIRELESS SENSOR MOTES AND WIRELESS SENSOR NETWORKS A VIRTUALLAB APPROACH FOR WIRELESS SENSOR MOTES AND WIRELESS SENSOR NETWORKS Anghel V. CONŢIU, Adina ŢOPA, Vasile T. DĂDÂRLAT Technical University of Cluj-Napoca, Str. Ctin Daicoviciu nr. 15, 400027 Cluj-Napoca,

More information

Low Power and Low Latency MAC Protocol: Dynamic Control of Radio Duty Cycle

Low Power and Low Latency MAC Protocol: Dynamic Control of Radio Duty Cycle 24 IJCSNS International Journal of Computer Science and Network Security, VOL.12 No.12, December 212 Low Power and Low Latency MAC Protocol: Dynamic Control of Radio Duty Cycle Jeehoon Lee*, Jongsoo Jeong,

More information

OCF for resource-constrained environments

OCF for resource-constrained environments October 11 13, 2016 Berlin, Germany OCF for resource-constrained environments Kishen Maloor, Intel 1 Outline Introduction Brief background in OCF Core Constrained environment charactertics IoTivity-Constrained

More information

Need for synchronization: If threads comprise parts of our software systems, then they must communicate.

Need for synchronization: If threads comprise parts of our software systems, then they must communicate. Thread communication and synchronization There are two main aspects to Outline for Lecture 19 multithreaded programming in Java: I. Thread synchronization. thread lifecycle, and thread synchronization.

More information

Java Threads. COMP 585 Noteset #2 1

Java Threads. COMP 585 Noteset #2 1 Java Threads The topic of threads overlaps the boundary between software development and operation systems. Words like process, task, and thread may mean different things depending on the author and the

More information

Middleware for Sensor Networks

Middleware for Sensor Networks Middleware for Sensor Networks Krzysztof Piotrowski piotrowski@ihp-ffo.de Background Application Middleware Sensor Network Application Middleware Sensor Network Middleware for Sensor Networks 2 Middleware

More information

Programming in Parallel COMP755

Programming in Parallel COMP755 Programming in Parallel COMP755 All games have morals; and the game of Snakes and Ladders captures, as no other activity can hope to do, the eternal truth that for every ladder you hope to climb, a snake

More information

System Architecture Directions for Networked Sensors[1]

System Architecture Directions for Networked Sensors[1] System Architecture Directions for Networked Sensors[1] Secure Sensor Networks Seminar presentation Eric Anderson System Architecture Directions for Networked Sensors[1] p. 1 Outline Sensor Network Characteristics

More information

JAVA and J2EE UNIT - 4 Multithreaded Programming And Event Handling

JAVA and J2EE UNIT - 4 Multithreaded Programming And Event Handling JAVA and J2EE UNIT - 4 Multithreaded Programming And Event Handling Multithreaded Programming Topics Multi Threaded Programming What are threads? How to make the classes threadable; Extending threads;

More information

TAG: A TINY AGGREGATION SERVICE FOR AD-HOC SENSOR NETWORKS

TAG: A TINY AGGREGATION SERVICE FOR AD-HOC SENSOR NETWORKS TAG: A TINY AGGREGATION SERVICE FOR AD-HOC SENSOR NETWORKS SAMUEL MADDEN, MICHAEL J. FRANKLIN, JOSEPH HELLERSTEIN, AND WEI HONG Proceedings of the Fifth Symposium on Operating Systems Design and implementation

More information

CSC 774 Advanced Network Security

CSC 774 Advanced Network Security Computer Science CSC 774 Advanced Network Security Topic 4.3 Mitigating DoS Attacks against Broadcast Authentication in Wireless Sensor Networks 1 Wireless Sensor Networks (WSN) A WSN consists of a potentially

More information

Threads Synchronization

Threads Synchronization Synchronization Threads Synchronization Threads share memory so communication can be based on shared references. This is a very effective way to communicate but is prone to two types of errors: Interference

More information

TinyOS Lesson 6 Topology Control

TinyOS Lesson 6 Topology Control TinyOS Lesson 6 Topology Control Object To learn how to adjust the power level when sending the data, and retrieve the RSSI and LQI values from the receiver. Use the program named RssiSend to transmit

More information

Inter-Integrated Circuit Bus IIC I2C TWI

Inter-Integrated Circuit Bus IIC I2C TWI Inter-Integrated Circuit Bus IIC TWI Bus Synchronous, multi-master, multi-slave, packet switched, single ended serial bus Developed by Philips in the early 1980 s (prior to SPI) Intended for on-board communications

More information

StackVsHeap SPL/2010 SPL/20

StackVsHeap SPL/2010 SPL/20 StackVsHeap Objectives Memory management central shared resource in multiprocessing RTE memory models that are used in Java and C++ services for Java/C++ programmer from RTE (JVM / OS). Perspectives of

More information

Last Class: Synchronization

Last Class: Synchronization Last Class: Synchronization Synchronization primitives are required to ensure that only one thread executes in a critical section at a time. Concurrent programs Low-level atomic operations (hardware) load/store

More information

Distributed Systems Exam 1 Review Paul Krzyzanowski. Rutgers University. Fall 2016

Distributed Systems Exam 1 Review Paul Krzyzanowski. Rutgers University. Fall 2016 Distributed Systems 2015 Exam 1 Review Paul Krzyzanowski Rutgers University Fall 2016 1 Question 1 Why did the use of reference counting for remote objects prove to be impractical? Explain. It s not fault

More information

The Kernel Abstraction

The Kernel Abstraction The Kernel Abstraction Debugging as Engineering Much of your time in this course will be spent debugging In industry, 50% of software dev is debugging Even more for kernel development How do you reduce

More information

Programming Sensor Networks

Programming Sensor Networks Programming Sensor Networks Distributed Computing Group Nicolas Burri Pascal von Rickenbach Overview TinyOS Platform Program Development Current Projects MOBILE COMPUTING 2 Sensor Nodes System Constraints

More information

Bluetooth low energy technology Bluegiga Technologies

Bluetooth low energy technology Bluegiga Technologies Bluetooth low energy technology Bluegiga Technologies Topics Background What is Bluetooth low energy? Basic concepts Architecture Differentiation and comparison Markets and applications Background Background

More information

Accelerometer with Analog and Digital I/O for StackableUSB USB1600

Accelerometer with Analog and Digital I/O for StackableUSB USB1600 The USB1600 accelerometer module provides the ideal mix of sensing ranges, resolutions, and sampling rates for rugged, compact embedded systems. The module stacks directly onto any StackableUSB Host computer

More information

Lesson I2C. I²C (Inter-Integrated Circuit) Lab Assignment: I2C Slave Driver

Lesson I2C. I²C (Inter-Integrated Circuit) Lab Assignment: I2C Slave Driver Lesson I2C I²C (Inter-Integrated Circuit) Lab Assignment: I2C Slave Driver I²C (Inter-Integrated Circuit) What is I 2 C I2C is pronounced "eye-squared see". It is also known as "TWI" because of the initial

More information

Sensors Network Simulators

Sensors Network Simulators Sensors Network Simulators Sensing Networking Qing Fang 10/14/05 Computation This Talk Not on how to run various network simulators Instead What differentiates various simulators Brief structures of the

More information

Multitasking Multitasking allows several activities to occur concurrently on the computer. A distinction is usually made between: Process-based multit

Multitasking Multitasking allows several activities to occur concurrently on the computer. A distinction is usually made between: Process-based multit Threads Multitasking Multitasking allows several activities to occur concurrently on the computer. A distinction is usually made between: Process-based multitasking Thread-based multitasking Multitasking

More information

SBD WARRIOR DATA SHEET

SBD WARRIOR DATA SHEET SBD WARRIOR DATA SHEET www.satelligent.ca v1.3 Features Controller for Iridium 9603 SBD transceiver 48 channel SiRFstarIV chipset based GPS Serial interface for 3rd party equipment or PC control Wide supply

More information

Contents. G53SRP: Java Threads. Definition. Why we need it. A Simple Embedded System. Why we need it. Java Threads 24/09/2009 G53SRP 1 ADC

Contents. G53SRP: Java Threads. Definition. Why we need it. A Simple Embedded System. Why we need it. Java Threads 24/09/2009 G53SRP 1 ADC Contents G53SRP: Java Threads Chris Greenhalgh School of Computer Science 1 Definition Motivations Threads Java threads Example embedded process Java Thread API & issues Exercises Book: Wellings 1.1 &

More information

Computation Abstractions. Processes vs. Threads. So, What Is a Thread? CMSC 433 Programming Language Technologies and Paradigms Spring 2007

Computation Abstractions. Processes vs. Threads. So, What Is a Thread? CMSC 433 Programming Language Technologies and Paradigms Spring 2007 CMSC 433 Programming Language Technologies and Paradigms Spring 2007 Threads and Synchronization May 8, 2007 Computation Abstractions t1 t1 t4 t2 t1 t2 t5 t3 p1 p2 p3 p4 CPU 1 CPU 2 A computer Processes

More information

DEVELOPMENT TEAM: Jeremiah Prousalis: Project Lead Firmware Lead Bluetooth Module Interfacing

DEVELOPMENT TEAM: Jeremiah Prousalis: Project Lead Firmware Lead Bluetooth Module Interfacing DEVELOPMENT TEAM: Jeremiah Prousalis: Project Lead Firmware Lead Bluetooth Module Interfacing Nathaniel Bradley: Hardware Lead Analog IR Design Power System Design Jesus Castro: Software Lead Android Application

More information

Product Specification

Product Specification Product Specification 15mm x 27mm Description One of the most capable Bluetooth modules available, the BT-21 Bluetooth OEM Module is designed for maximum flexibility. The BT-21 module includes 14 general

More information

Synchronization COMPSCI 386

Synchronization COMPSCI 386 Synchronization COMPSCI 386 Obvious? // push an item onto the stack while (top == SIZE) ; stack[top++] = item; // pop an item off the stack while (top == 0) ; item = stack[top--]; PRODUCER CONSUMER Suppose

More information

G52CON: Concepts of Concurrency

G52CON: Concepts of Concurrency G52CON: Concepts of Concurrency Lecture 4: Atomic Actions Natasha Alechina School of Computer Science nza@cs.nott.ac.uk Outline of the lecture process execution fine-grained atomic actions using fine-grained

More information

BT-22 Product Specification

BT-22 Product Specification BT-22 Product Specification Features Amp ed RF, Inc. Description 10.4 mm x 13.5 mm Our micro-sized Bluetooth module is the smallest form factor available providing a complete RF platform. The BT-22 is

More information

A TEMPORAL MESSAGE ORDERING AND OBJECT TRACKING APPLICATION. by LAKSHMAN KAVETI

A TEMPORAL MESSAGE ORDERING AND OBJECT TRACKING APPLICATION. by LAKSHMAN KAVETI A TEMPORAL MESSAGE ORDERING AND OBJECT TRACKING APPLICATION by LAKSHMAN KAVETI B.E., Deccan College of Engineering and Technology (affiliated with Osmania University), India, 2006 A REPORT Submitted in

More information

Practical Aspects of CTI WSN Testbed

Practical Aspects of CTI WSN Testbed Practical Aspects of CTI WSN Testbed Dpt. of Computer Engineering and Informatics, University of Patras, Greece Research Academic Computer Technology Institute (CTI), Patras, Greece 2nd PROSENSE Meeting

More information

TEVATRON TECHNOLOGIES PVT. LTD Embedded! Robotics! IoT! VLSI Design! Projects! Technical Consultancy! Education! STEM! Software!

TEVATRON TECHNOLOGIES PVT. LTD Embedded! Robotics! IoT! VLSI Design! Projects! Technical Consultancy! Education! STEM! Software! Summer Training 2016 Advance Embedded Systems Fast track of AVR and detailed working on STM32 ARM Processor with RTOS- Real Time Operating Systems Covering 1. Hands on Topics and Sessions Covered in Summer

More information

CS11 Java. Fall Lecture 7

CS11 Java. Fall Lecture 7 CS11 Java Fall 2006-2007 Lecture 7 Today s Topics All about Java Threads Some Lab 7 tips Java Threading Recap A program can use multiple threads to do several things at once A thread can have local (non-shared)

More information

Introduction to OS Synchronization MOS 2.3

Introduction to OS Synchronization MOS 2.3 Introduction to OS Synchronization MOS 2.3 Mahmoud El-Gayyar elgayyar@ci.suez.edu.eg Mahmoud El-Gayyar / Introduction to OS 1 Challenge How can we help processes synchronize with each other? E.g., how

More information

Presented by: Murad Kaplan

Presented by: Murad Kaplan Presented by: Murad Kaplan Introduction. Design of SCP-MAC. Lower Bound of Energy Performance with Periodic Traffic. Protocol Implementation. Experimental Evaluation. Related Work. 2 Energy is a critical

More information

KMote - Design and Implementation of a low cost, low power platform for wireless sensor networks. Naveen Madabhushi

KMote - Design and Implementation of a low cost, low power platform for wireless sensor networks. Naveen Madabhushi KMote - Design and Implementation of a low cost, low power platform for wireless sensor networks Naveen Madabhushi Presentation Outline Introduction Related Work Motivation and Problem Statement Design

More information

Exercise Session Week 8

Exercise Session Week 8 Chair of Software Engineering Java and C# in Depth Carlo A. Furia, Marco Piccioni, Bertrand Meyer Exercise Session Week 8 Java 8 release date Was early September 2013 Currently moved to March 2014 http://openjdk.java.net/projects/jdk8/milestones

More information

Ch 9: Control flow. Sequencers. Jumps. Jumps

Ch 9: Control flow. Sequencers. Jumps. Jumps Ch 9: Control flow Sequencers We will study a number of alternatives traditional sequencers: sequential conditional iterative jumps, low-level sequencers to transfer control escapes, sequencers to transfer

More information

EE445L Fall 2014 Final Version A solution Page 1 of 7

EE445L Fall 2014 Final Version A solution Page 1 of 7 EE445L Fall 2014 Final Version A solution Page 1 of 7 Jonathan W. Valvano Solution This is the closed book section. You must put your answers in the boxes. When you are done, you turn in the closed-book

More information

27 March 2018 Mikael Arguedas and Morgan Quigley

27 March 2018 Mikael Arguedas and Morgan Quigley 27 March 2018 Mikael Arguedas and Morgan Quigley Separate devices: (prototypes 0-3) Unified camera: (prototypes 4-5) Unified system: (prototypes 6+) USB3 USB Host USB3 USB2 USB3 USB Host PCIe root

More information

What is a thread anyway?

What is a thread anyway? Concurrency in Java What is a thread anyway? Smallest sequence of instructions that can be managed independently by a scheduler There can be multiple threads within a process Threads can execute concurrently

More information

Remote Procedure Call

Remote Procedure Call Remote Procedure Call Remote Procedure Call Integrate network communication with programming language Procedure call is well understood implementation use Control transfer Data transfer Goals Easy make

More information

Synchronising Threads

Synchronising Threads Synchronising Threads David Chisnall March 1, 2011 First Rule for Maintainable Concurrent Code No data may be both mutable and aliased Harder Problems Data is shared and mutable Access to it must be protected

More information

Exception Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011

Exception Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011 More C++ David Chisnall March 17, 2011 Exceptions A more fashionable goto Provides a second way of sending an error condition up the stack until it can be handled Lets intervening stack frames ignore errors

More information

Implementation Garbage Collection

Implementation Garbage Collection CITS 3242 Programming Paradigms Part IV: Advanced Topics Topic 19: Implementation Garbage Collection Most languages in the functional, logic, and object-oriented paradigms include some form of automatic

More information

Faust Android API. Using This Package

Faust Android API. Using This Package Faust Android API This API allows to interact with a natively compiled Faust object and its associated audio engine at a very high level from the JAVA layer of an Android app. The idea is that all the

More information

CS 333 Introduction to Operating Systems. Class 3 Threads & Concurrency. Jonathan Walpole Computer Science Portland State University

CS 333 Introduction to Operating Systems. Class 3 Threads & Concurrency. Jonathan Walpole Computer Science Portland State University CS 333 Introduction to Operating Systems Class 3 Threads & Concurrency Jonathan Walpole Computer Science Portland State University 1 The Process Concept 2 The Process Concept Process a program in execution

More information

AVR XMEGA Product Line Introduction AVR XMEGA TM. Product Introduction.

AVR XMEGA Product Line Introduction AVR XMEGA TM. Product Introduction. AVR XMEGA TM Product Introduction 32-bit AVR UC3 AVR Flash Microcontrollers The highest performance AVR in the world 8/16-bit AVR XMEGA Peripheral Performance 8-bit megaavr The world s most successful

More information

Exercise Session Week 8

Exercise Session Week 8 Chair of Software Engineering Java and C# in Depth Carlo A. Furia, Marco Piccioni, Bertrand Meyer Exercise Session Week 8 Quiz 1: What is printed? (Java) class MyTask implements Runnable { public void

More information

AT-501 Cortex-A5 System On Module Product Brief

AT-501 Cortex-A5 System On Module Product Brief AT-501 Cortex-A5 System On Module Product Brief 1. Scope The following document provides a brief description of the AT-501 System on Module (SOM) its features and ordering options. For more details please

More information

Group Members: Chetan Fegade Nikhil Mascarenhas. Mentor: Dr. Yann Hang Lee

Group Members: Chetan Fegade Nikhil Mascarenhas. Mentor: Dr. Yann Hang Lee Group Members: Chetan Fegade Nikhil Mascarenhas Mentor: Dr. Yann Hang Lee 1. Introduction 2. TinyGALS programming model 3. TinyOS 4. NesC 5. Middleware 6. Conclusion 7. References 8. Q & A Event driven

More information