Pemrograman Dasar TinyOS Menggunakan nesC

Slides:



Advertisements
Presentasi serupa
Database Android Dwi Muktianto
Advertisements

Function.
BAB 3 – Pandangan Tingkat Paling Atas Fungsi dan Interkoneksi Komputer
- PERTEMUAN 1 - PENGANTAR DAN INSTALASI JAVA BAHASA PEMROGRAMAN.
Object Oriented Programming. Kemampuan untuk memelihara dan mengimplementasikan perubahan di dalam program lebih efektif dan cepatKemampuan untuk memelihara.
Pemrograman Berbasis Obyek
SE3414 RPL: Teknik Berorientasi Objek
Pemrograman Berorientasi Obyek Oleh Tita Karlita
Rekayasa Perangkat Lunak Proses Rekayasa Perangkat Lunak
Pemrograman Berorientasi Obyek1 Sejarah C – Martin Richard -> Bahasa Pemrograman BCPL 1970 – Ken Thomson (Bell Lab) -> Bahasa B yang membuat Unix.
Game Theory Purdianta, ST., MT..
Keuntungan metodologi berorientasi objek.
Perancangan Berorientasi Objek (Object Oriented Analysis & Design)
BLACK BOX TESTING.
Presented By : Group 2. A solution of an equation in two variables of the form. Ax + By = C and Ax + By + C = 0 A and B are not both zero, is an ordered.
1 Pertemuan 19 Function Component Matakuliah: M0446/Analisa dan Perancangan Sistem Informasi Tahun: 2005 Versi: 0/0.
Testing Implementasi Sistem Oleh :Rifiana Arief, SKom, MMSI
1 Session 4 Decision Making For Computer Operations Management (Linear Programming Method)
Oleh: SARIPUDIN Jurusan SISTEM INFORMASI
1 Pertemuan 21 Function Matakuliah: M0086/Analisis dan Perancangan Sistem Informasi Tahun: 2005 Versi: 5.
1 Pertemuan 26 NEURO FUZZY SYSTEM Matakuliah: H0434/Jaringan Syaraf Tiruan Tahun: 2005 Versi: 1.
PERTEMUAN KE-6 UNIFIED MODELLING LANGUAGE (UML) (Part 2)
Dr. Nur Aini Masruroh Deterministic mathematical modeling.
Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.
1 Pertemuan 26 Review Matakuliah: M0086/Analisis dan Perancangan Sistem Informasi Tahun: 2005 Versi: 5.
1 Pertemuan 11 Function dari System Matakuliah: M0446/Analisa dan Perancangan Sistem Informasi Tahun: 2005 Versi: 0/0.
CppUnit – The Unit Testing A slide demo of how CppUnit’s UnitTest works by an example.
Bayu Priyambadha, S.Kom.  Classes, which are the "blueprints" for an object and are the actual code that defines the properties and methods.  Objects,
9.3 Geometric Sequences and Series. Objective To find specified terms and the common ratio in a geometric sequence. To find the partial sum of a geometric.
F ORM Bayu Priyambadha, S.Kom. F ORM Form is the interface (user interface) for users to communicate with the application system. Each posted data from.
Visual Basic for Aplications in powerpoint. What is Visual Basic for Aplications? Visual Basic for Applications (VBA) is a very powerful objectoriented.
Jartel, Sukiswo Sukiswo
Object-Oriented Design (OOD)
Object Oriented Design
ELEMEN-ELEMEN PROGRAM
Pertemuan 23 Sequence Diagram
Notasi Object Oriented System
Pemrograman Dasar TinyOS
REKAYASA PERANGKAT LUNAK
Rekayasa Perangkat Lunak Class Diagram
Operating System Structure
Pemodelan objek.
REKAYASA PERANGKAT LUNAK
Advanced Socket Programming
Model Konvensional.
Pertemuan #3 Data Modeling Using the Entity-Relationship Model
Konfigurasi dan Wiring
Association, Composition dan Inheritance
CLASS DIAGRAM.
Overview Component-Oriented Programming
Dasar-Dasar Pemrograman
Object Oriented Programming.
Pertemuan 17 Aplication Domain
Pemrograman Berorientasi Objek
REKAYASA PERANGKAT LUNAK Nama : Moch.Bachrul S.H Moch.Rofiuddin
REKAYASA PERANGKAT LUNAK Perancangan arsitektur perangkat lunak
REKAYASA PERANGKAT LUNAK
Statechart , Class, Component & Deployment Diagram
Statechart , Class, Component & Deployment Diagram
ANALISIS & DESAIN SISTEM
Unified Modelling Languange (UML)
UML- UNIFIED MODELING LANGUAGE
REKAYASA PERANGKAT LUNAK PERANCANGAN ARSITEKTUR PERANGKAT LUNAK
Pertemuan 4 CLASS DIAGRAM.
REKAYASA PERANGKAT LUNAK PERANCANGAN ARSITEKTUR PERANGKAT LUNAK
Java Database Connectivity (JDBC)
Jaringan Komputer.
Pertemuan 14 Class Diagram.
Pemrograman berorientasi objek
Website: Website Technologies.
Transcript presentasi:

Pemrograman Dasar TinyOS Menggunakan nesC

C dan nesC C nesC Modul PowerupC Konfigurasi PowerupAppC

C dan nesC C nesC Terdiri dari fungsi-fungsi dengan tujuan spesifik Berinteraksi satu dengan yang lain dengan cara memanggil fungsi secara langsung Linking terjadi secara implisit oleh linker Dibangun dari komponen-komponen yang menyediakan layanan-layanan spesifik Interaksi antarkomponen dilakukan melalui antarmuka (interface): pengguna antarmuka meminta (memanggil perintah, call command) pada penyedia (provider) antarmuka, penyedia antarmuka melakukan callback (signal event) ke antarmuka pengguna Command dan event hanyalah pemanggilan fungsi biasa Linking terjadi secara eksplisit melalui wiring

Modul dan Konfigurasi Modul (module) berisi logika aplikasi  program Konfigurasi (configuration) berisi spesifikasi bagaimana logika aplikasi terhubung dengan layanan yang disediakan TinyOS

Example Revisited: Modul Komponen PowerupC berinteraksi melalui 2 antarmuka: Boot dan Leds Menyediakan implementasi kejadian booted Memanggil perintah led0On pada antarmuka Leds

Example Revisited: Konfigurasi Konfigurasi ini menyatakan bahwa PowerupApp terdiri dari 3 komponen (baik berupa modul atau konfigurasi lain): MainC, LedsC, PowerupC Secara eksplisit menspesifikasikan hubungan (wiring) antara antarmuka yang tersedia dan yang digunakan oleh komponen Saat MainC telah selesai melakukan booting, maka MainC mengirimkan sinyal kejadian booted pada antarmukanya (Boot) yang dihubungkan melalui wiring pada PowerupAppC dengan kejadian booted di PowerupC Bagaimana dengan antarmuka Leds?

Example Revisited: Diagram

Model Kompilasi nesC Linking secara eksplisit (wiring) dapat menghasilkan kode yang optimal (optimized binaries): Tidak ada batasan optimasi karena hasil kompilasi nesC berupa sebuah file kode C Inline code jika dibutuhkan Menghapus kode dan variabel yang tidak pernah diakses Tidak adanya dynamic linking membuat nesC dapat melihat gambaran program yang dikompilasi, ie. call graph sudah dapat ditentukan pada saat kompilasi

Organisasi Program dalam nesC Komponen (module atau configuration), antarmuka (interface), dan wiring: terkait dengan penamaan dan organisasi elemen program (variabel, fungsi, tipe data, dll) Komponen mengelompokkan fungsionalitas yang terkait dalam satu unit seperti halnya kelas pada bahasa berorientasi objek, misal timer, sensor, system boot Nama komponen adalah global, sedangkan operasi di dalam komponen tidak

Organisasi Program dalam nesC Antarmuka digunakan untuk menspesifikasikan hubungan antarkomponen: komponen menyediakan antarmuka dan menggunakan antarmuka Hubungan terjadi bukan melalui operasinya: operasi terjadi setelah terhubung Antarmuka menyederhanakan dan memperjelas kode: mengikuti pola yang sudah umum, yaitu penyedia dan pengguna Code reuse: antarmuka adalah suatu kontrak sehingga untuk antarmuka yang sama, implementasi bisa berbeda

Organisasi Program dalam nesC Wiring: cara untuk mendeklarasikan interaksi antarkomponen Perubahan interaksi dapat dengan mudah dilakukan dengan mengubah 2 baris kode tanpa mempengaruhi komponen lain Pada C, perubahan ini sangat mungkin mempengaruhi aplikasi yang menggunakan pustaka yang sama

Wiring dan Callback Wiring menyediakan mekanisme yang efisien untuk mendukung callback Yang dilakukan nesC adalah melakukan binding secara statik dengan wiring (saat kompilasi – compile time) dibanding dinamik seperti halnya pada C (saat berjalan – runtime) Akibatnya, menghemat RAM dan dapat dilakukan optimasi saat kompilasi

Wiring dan Callback Implementasi pada C

Wiring dan Callback Implementasi pada nesC (TinyOS)

Rangkuman Table 2.1 summarizes the difference in how programs are structured in C, C++ and nesC. In C, the typical high-level programming unit is the file, with an associated header file that specified and documents the file’s behavior. The linker builds applications out of files by matching global names; where this is not sufficient to express program structure (e.g. for callbacks), the programmer can use function pointers to delay the decision of which function is called at what point. C++ provides explicit language mechanisms for structuring programs: classes are typically used to group related functionality, and programs are built out of interacting objects (class instances). An abstract class can be used to define common class specification patterns (like sending a message); classes that wish to follow this pattern then inherit from the abstract class and implement its methods – Java’s interfaces provide similar functionality. Like in C, the linker builds applications by matching class and function names. Finally, virtual methods provide a more convenient and more structured way than function pointers for delaying beyond link-time decisions about what code to execute. In nesC, programs are built out of a set of cooperating components. Each component uses interfaces to specify the services it provides and uses; the programmer uses wiring to build an application out of components by writing wiring statements, each of which connects an interface used by one component to an interface provided by another. Making these wiring statements explicit instead of relying on implicit name matching eliminates the requirement to use dynamic mechanisms (function pointers, virtual methods) to express concepts such as callbacks from a service to a client.