<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://projectswiki.eleceng.adelaide.edu.au/projects/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=A1627539</id>
	<title>Projects - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://projectswiki.eleceng.adelaide.edu.au/projects/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=A1627539"/>
	<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php/Special:Contributions/A1627539"/>
	<updated>2026-04-07T06:17:07Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.4</generator>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=5336</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=5336"/>
		<updated>2015-10-24T11:23:06Z</updated>

		<summary type="html">&lt;p&gt;A1627539: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
While implementing individual layers may lead to increased memory use due to duplicated buffers on various layers, it was chosen to specifically not to use cross-layer implementation as we wanted to:&lt;br /&gt;
&lt;br /&gt;
* Use abstraction to simplify the development process&lt;br /&gt;
* Allow higher layers to be ported to other platforms as technology improves&lt;br /&gt;
* Allow lower layers to be used easily without higher layers as to customized to use in smaller microcontrollers, projects that does not require extra complexity of higher layers, etc.&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
With the wireless medium being tightly controlled, most wireless ad-hoc network applications operates in the ISM band, which is free from licensing. This means that there is limited channel bandwidth, much less than that of a wired network. Additionally, being wireless, there are many factors that can degrade the quality of the signal, such as noise and interference from other sources.&lt;br /&gt;
&lt;br /&gt;
The Link Layer, sometimes referred to as a MAC layer, involves the functions and procedures to transfer data between two or more nodes in-range of the network. Its primary responsibility is to ensure that data is correct before the user application has access to them and discard incorrect data as it receives. &lt;br /&gt;
&lt;br /&gt;
Furthermore, for data transmission utilizing multi-hop, a link layer must also facilitates safe-guards against [https://en.wikipedia.org/wiki/Hidden_node_problem hidden-] and [https://en.wikipedia.org/wiki/Exposed_node_problem exposed-] terminal problems.&lt;br /&gt;
&lt;br /&gt;
Link Layer protocols commonly used in embedded systems belongs to the &amp;#039;&amp;#039;contention-based&amp;#039;&amp;#039; classification. This means that they are aware of the risks of collisions of transmitted data, while &amp;#039;&amp;#039;contention-free&amp;#039;&amp;#039; protocols commonly used in mobile phone networks, are more applicable to static networks with centralized control.&lt;br /&gt;
&lt;br /&gt;
Utilizing a single channel with limited hardware processing power and aimed to be low power, two implementations of the link layer exists in the project: pure CSMA and FAMA-NCS.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CSMA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
CSMA protocol is classified as a contention-based protocol categorized in the &amp;#039;&amp;#039;random-access&amp;#039;&amp;#039; scheme. In this protocol, a node may transmit as soon as it is ready. It is suitable for low-load systems with a large number of potential senders. &lt;br /&gt;
&lt;br /&gt;
As the CC430 chip used supporting Automatic Clear Channel Assessment on-chip [http://www.ti.com/product/cc430f5137 CC430F5137] (Listen-before-talk), the pure CSMA implementation is basically the physical layer implementation with extra address checking and buffers, ensuring that it conforms with the Link Layer interface.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FAMA-NCS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
FAMA-NCS stands for &amp;#039;&amp;#039;Floor Acquisition Multiple Access&amp;#039;&amp;#039; with &amp;#039;&amp;#039;Non-persistent carrier sensing&amp;#039;&amp;#039; ([http://link.springer.com/article/10.1023%2FA%3A1019146831447 Specification]), where &amp;#039;&amp;#039;floor&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;channel&amp;#039;&amp;#039;. It is a MACA-based scheme that makes announcements before it sends data to inform other nodes to be silent. Unlike MACA protocols, FAMA protocols require collision avoidance to be performed at both the sender and receiver nodes. &lt;br /&gt;
&lt;br /&gt;
To acquire the floor (channel), the sending node sends out a &amp;#039;&amp;#039;Request-to-Send (RTS)&amp;#039;&amp;#039;. The receiver responds with a &amp;#039;&amp;#039;Clear-to-Send (CTS)&amp;#039;&amp;#039; back to the transmitter. Any nodes overhearing this CTS packet knows the station has acquired the floor. CTS packets are repeated long enough for the benefit of any hidden sender did not register another node&amp;#039;s RTS.&lt;br /&gt;
&lt;br /&gt;
With CC430 chip including Automatic Clear Channel Assessment that uses carrier sensing, it is arbitrary that the non-persistent carrier sensing should be used.&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
[[File:Packet_Format.png]]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Maximum stable transfer speed&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
* Physical Layer: 215 packets/second&lt;br /&gt;
* CSMA-based Link Layer: 169 packets/second&lt;br /&gt;
* FAMA-based Link Layer: 22 packets/second&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* CC430 development boards from Olimex were used as development targets throughout this project ([http://au.element14.com/olimex/msp430-ccrf/cc430f5137-transceiver-dev-board/dp/2061336 MSP430-CCRF])&lt;br /&gt;
* Various MSP430 LaunchPads were utilized as debugger and programmer, including:&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430g2.html#tabs MSP430G2553 LaunchPad]: hardware not recognized in Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430fr4133.html#tabs MSP430FR4133 LaunchPad]: added feature of power measurement, compatible with both Windows and Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430f5529lp.html#tabs MSP430F5529 LaunchPad]: compatible with both Windows and Mac OS.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
* Version: 6.1.1&lt;br /&gt;
* Compiler version: 4.4.4&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
* Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
* Provide a quick description of how to use this tool for readers&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=5335</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=5335"/>
		<updated>2015-10-24T11:09:13Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Project Overview in Songs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
=== Project Overview in our Original Songs === &lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=97gdJu1JrVI Ad-hoc Networks, Physical Layer, Link Layer Intro] (Make sure to enable subtitles)&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/gOzrWcktKQ4 Network Layer Intro]&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
While implementing individual layers may lead to increased memory use due to duplicated buffers on various layers, it was chosen to specifically not to use cross-layer implementation as we wanted to:&lt;br /&gt;
&lt;br /&gt;
* Use abstraction to simplify the development process&lt;br /&gt;
* Allow higher layers to be ported to other platforms as technology improves&lt;br /&gt;
* Allow lower layers to be used easily without higher layers as to customized to use in smaller microcontrollers, projects that does not require extra complexity of higher layers, etc.&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
With the wireless medium being tightly controlled, most wireless ad-hoc network applications operates in the ISM band, which is free from licensing. This means that there is limited channel bandwidth, much less than that of a wired network. Additionally, being wireless, there are many factors that can degrade the quality of the signal, such as noise and interference from other sources.&lt;br /&gt;
&lt;br /&gt;
The Link Layer, sometimes referred to as a MAC layer, involves the functions and procedures to transfer data between two or more nodes in-range of the network. Its primary responsibility is to ensure that data is correct before the user application has access to them and discard incorrect data as it receives. &lt;br /&gt;
&lt;br /&gt;
Furthermore, for data transmission utilizing multi-hop, a link layer must also facilitates safe-guards against [https://en.wikipedia.org/wiki/Hidden_node_problem hidden-] and [https://en.wikipedia.org/wiki/Exposed_node_problem exposed-] terminal problems.&lt;br /&gt;
&lt;br /&gt;
Link Layer protocols commonly used in embedded systems belongs to the &amp;#039;&amp;#039;contention-based&amp;#039;&amp;#039; classification. This means that they are aware of the risks of collisions of transmitted data, while &amp;#039;&amp;#039;contention-free&amp;#039;&amp;#039; protocols commonly used in mobile phone networks, are more applicable to static networks with centralized control.&lt;br /&gt;
&lt;br /&gt;
Utilizing a single channel with limited hardware processing power and aimed to be low power, two implementations of the link layer exists in the project: pure CSMA and FAMA-NCS.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CSMA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
CSMA protocol is classified as a contention-based protocol categorized in the &amp;#039;&amp;#039;random-access&amp;#039;&amp;#039; scheme. In this protocol, a node may transmit as soon as it is ready. It is suitable for low-load systems with a large number of potential senders. &lt;br /&gt;
&lt;br /&gt;
As the CC430 chip used supporting Automatic Clear Channel Assessment on-chip [http://www.ti.com/product/cc430f5137 CC430F5137] (Listen-before-talk), the pure CSMA implementation is basically the physical layer implementation with extra address checking and buffers, ensuring that it conforms with the Link Layer interface.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FAMA-NCS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
FAMA-NCS stands for &amp;#039;&amp;#039;Floor Acquisition Multiple Access&amp;#039;&amp;#039; with &amp;#039;&amp;#039;Non-persistent carrier sensing&amp;#039;&amp;#039; ([http://link.springer.com/article/10.1023%2FA%3A1019146831447 Specification]), where &amp;#039;&amp;#039;floor&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;channel&amp;#039;&amp;#039;. It is a MACA-based scheme that makes announcements before it sends data to inform other nodes to be silent. Unlike MACA protocols, FAMA protocols require collision avoidance to be performed at both the sender and receiver nodes. &lt;br /&gt;
&lt;br /&gt;
To acquire the floor (channel), the sending node sends out a &amp;#039;&amp;#039;Request-to-Send (RTS)&amp;#039;&amp;#039;. The receiver responds with a &amp;#039;&amp;#039;Clear-to-Send (CTS)&amp;#039;&amp;#039; back to the transmitter. Any nodes overhearing this CTS packet knows the station has acquired the floor. CTS packets are repeated long enough for the benefit of any hidden sender did not register another node&amp;#039;s RTS.&lt;br /&gt;
&lt;br /&gt;
With CC430 chip including Automatic Clear Channel Assessment that uses carrier sensing, it is arbitrary that the non-persistent carrier sensing should be used.&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
[[File:Packet_Format.png]]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Maximum stable transfer speed&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
* Physical Layer: 215 packets/second&lt;br /&gt;
* CSMA-based Link Layer: 169 packets/second&lt;br /&gt;
* FAMA-based Link Layer: 22 packets/second&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* CC430 development boards from Olimex were used as development targets throughout this project ([http://au.element14.com/olimex/msp430-ccrf/cc430f5137-transceiver-dev-board/dp/2061336 MSP430-CCRF])&lt;br /&gt;
* Various MSP430 LaunchPads were utilized as debugger and programmer, including:&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430g2.html#tabs MSP430G2553 LaunchPad]: hardware not recognized in Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430fr4133.html#tabs MSP430FR4133 LaunchPad]: added feature of power measurement, compatible with both Windows and Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430f5529lp.html#tabs MSP430F5529 LaunchPad]: compatible with both Windows and Mac OS.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
* Version: 6.1.1&lt;br /&gt;
* Compiler version: 4.4.4&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
* Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
* Provide a quick description of how to use this tool for readers&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=5334</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=5334"/>
		<updated>2015-10-24T10:58:14Z</updated>

		<summary type="html">&lt;p&gt;A1627539: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
=== Project Overview in Songs === &lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=97gdJu1JrVI Ad-hoc Networks, Physical Layer, Link Layer Intro] (Make sure to enable subtitles)&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/gOzrWcktKQ4 Network Layer Intro]&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
While implementing individual layers may lead to increased memory use due to duplicated buffers on various layers, it was chosen to specifically not to use cross-layer implementation as we wanted to:&lt;br /&gt;
&lt;br /&gt;
* Use abstraction to simplify the development process&lt;br /&gt;
* Allow higher layers to be ported to other platforms as technology improves&lt;br /&gt;
* Allow lower layers to be used easily without higher layers as to customized to use in smaller microcontrollers, projects that does not require extra complexity of higher layers, etc.&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
With the wireless medium being tightly controlled, most wireless ad-hoc network applications operates in the ISM band, which is free from licensing. This means that there is limited channel bandwidth, much less than that of a wired network. Additionally, being wireless, there are many factors that can degrade the quality of the signal, such as noise and interference from other sources.&lt;br /&gt;
&lt;br /&gt;
The Link Layer, sometimes referred to as a MAC layer, involves the functions and procedures to transfer data between two or more nodes in-range of the network. Its primary responsibility is to ensure that data is correct before the user application has access to them and discard incorrect data as it receives. &lt;br /&gt;
&lt;br /&gt;
Furthermore, for data transmission utilizing multi-hop, a link layer must also facilitates safe-guards against [https://en.wikipedia.org/wiki/Hidden_node_problem hidden-] and [https://en.wikipedia.org/wiki/Exposed_node_problem exposed-] terminal problems.&lt;br /&gt;
&lt;br /&gt;
Link Layer protocols commonly used in embedded systems belongs to the &amp;#039;&amp;#039;contention-based&amp;#039;&amp;#039; classification. This means that they are aware of the risks of collisions of transmitted data, while &amp;#039;&amp;#039;contention-free&amp;#039;&amp;#039; protocols commonly used in mobile phone networks, are more applicable to static networks with centralized control.&lt;br /&gt;
&lt;br /&gt;
Utilizing a single channel with limited hardware processing power and aimed to be low power, two implementations of the link layer exists in the project: pure CSMA and FAMA-NCS.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CSMA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
CSMA protocol is classified as a contention-based protocol categorized in the &amp;#039;&amp;#039;random-access&amp;#039;&amp;#039; scheme. In this protocol, a node may transmit as soon as it is ready. It is suitable for low-load systems with a large number of potential senders. &lt;br /&gt;
&lt;br /&gt;
As the CC430 chip used supporting Automatic Clear Channel Assessment on-chip [http://www.ti.com/product/cc430f5137 CC430F5137] (Listen-before-talk), the pure CSMA implementation is basically the physical layer implementation with extra address checking and buffers, ensuring that it conforms with the Link Layer interface.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FAMA-NCS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
FAMA-NCS stands for &amp;#039;&amp;#039;Floor Acquisition Multiple Access&amp;#039;&amp;#039; with &amp;#039;&amp;#039;Non-persistent carrier sensing&amp;#039;&amp;#039; ([http://link.springer.com/article/10.1023%2FA%3A1019146831447 Specification]), where &amp;#039;&amp;#039;floor&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;channel&amp;#039;&amp;#039;. It is a MACA-based scheme that makes announcements before it sends data to inform other nodes to be silent. Unlike MACA protocols, FAMA protocols require collision avoidance to be performed at both the sender and receiver nodes. &lt;br /&gt;
&lt;br /&gt;
To acquire the floor (channel), the sending node sends out a &amp;#039;&amp;#039;Request-to-Send (RTS)&amp;#039;&amp;#039;. The receiver responds with a &amp;#039;&amp;#039;Clear-to-Send (CTS)&amp;#039;&amp;#039; back to the transmitter. Any nodes overhearing this CTS packet knows the station has acquired the floor. CTS packets are repeated long enough for the benefit of any hidden sender did not register another node&amp;#039;s RTS.&lt;br /&gt;
&lt;br /&gt;
With CC430 chip including Automatic Clear Channel Assessment that uses carrier sensing, it is arbitrary that the non-persistent carrier sensing should be used.&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
[[File:Packet_Format.png]]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Maximum stable transfer speed&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
* Physical Layer: 215 packets/second&lt;br /&gt;
* CSMA-based Link Layer: 169 packets/second&lt;br /&gt;
* FAMA-based Link Layer: 22 packets/second&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* CC430 development boards from Olimex were used as development targets throughout this project ([http://au.element14.com/olimex/msp430-ccrf/cc430f5137-transceiver-dev-board/dp/2061336 MSP430-CCRF])&lt;br /&gt;
* Various MSP430 LaunchPads were utilized as debugger and programmer, including:&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430g2.html#tabs MSP430G2553 LaunchPad]: hardware not recognized in Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430fr4133.html#tabs MSP430FR4133 LaunchPad]: added feature of power measurement, compatible with both Windows and Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430f5529lp.html#tabs MSP430F5529 LaunchPad]: compatible with both Windows and Mac OS.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
* Version: 6.1.1&lt;br /&gt;
* Compiler version: 4.4.4&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
* Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
* Provide a quick description of how to use this tool for readers&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3920</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3920"/>
		<updated>2015-10-21T12:40:34Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* SmartRF Studio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
While implementing individual layers may lead to increased memory use due to duplicated buffers on various layers, it was chosen to specifically not to use cross-layer implementation as we wanted to:&lt;br /&gt;
&lt;br /&gt;
* Use abstraction to simplify the development process&lt;br /&gt;
* Allow higher layers to be ported to other platforms as technology improves&lt;br /&gt;
* Allow lower layers to be used easily without higher layers as to customized to use in smaller microcontrollers, projects that does not require extra complexity of higher layers, etc.&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
With the wireless medium being tightly controlled, most wireless ad-hoc network applications operates in the ISM band, which is free from licensing. This means that there is limited channel bandwidth, much less than that of a wired network. Additionally, being wireless, there are many factors that can degrade the quality of the signal, such as noise and interference from other sources.&lt;br /&gt;
&lt;br /&gt;
The Link Layer, sometimes referred to as a MAC layer, involves the functions and procedures to transfer data between two or more nodes in-range of the network. Its primary responsibility is to ensure that data is correct before the user application has access to them and discard incorrect data as it receives. &lt;br /&gt;
&lt;br /&gt;
Furthermore, for data transmission utilizing multi-hop, a link layer must also facilitates safe-guards against [https://en.wikipedia.org/wiki/Hidden_node_problem hidden-] and [https://en.wikipedia.org/wiki/Exposed_node_problem exposed-] terminal problems.&lt;br /&gt;
&lt;br /&gt;
Link Layer protocols commonly used in embedded systems belongs to the &amp;#039;&amp;#039;contention-based&amp;#039;&amp;#039; classification. This means that they are aware of the risks of collisions of transmitted data, while &amp;#039;&amp;#039;contention-free&amp;#039;&amp;#039; protocols commonly used in mobile phone networks, are more applicable to static networks with centralized control.&lt;br /&gt;
&lt;br /&gt;
Utilizing a single channel with limited hardware processing power and aimed to be low power, two implementations of the link layer exists in the project: pure CSMA and FAMA-NCS.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CSMA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
CSMA protocol is classified as a contention-based protocol categorized in the &amp;#039;&amp;#039;random-access&amp;#039;&amp;#039; scheme. In this protocol, a node may transmit as soon as it is ready. It is suitable for low-load systems with a large number of potential senders. &lt;br /&gt;
&lt;br /&gt;
As the CC430 chip used supporting Automatic Clear Channel Assessment on-chip [http://www.ti.com/product/cc430f5137 CC430F5137] (Listen-before-talk), the pure CSMA implementation is basically the physical layer implementation with extra address checking and buffers, ensuring that it conforms with the Link Layer interface.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FAMA-NCS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
FAMA-NCS stands for &amp;#039;&amp;#039;Floor Acquisition Multiple Access&amp;#039;&amp;#039; with &amp;#039;&amp;#039;Non-persistent carrier sensing&amp;#039;&amp;#039; ([http://link.springer.com/article/10.1023%2FA%3A1019146831447 Specification]), where &amp;#039;&amp;#039;floor&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;channel&amp;#039;&amp;#039;. It is a MACA-based scheme that makes announcements before it sends data to inform other nodes to be silent. Unlike MACA protocols, FAMA protocols require collision avoidance to be performed at both the sender and receiver nodes. &lt;br /&gt;
&lt;br /&gt;
To acquire the floor (channel), the sending node sends out a &amp;#039;&amp;#039;Request-to-Send (RTS)&amp;#039;&amp;#039;. The receiver responds with a &amp;#039;&amp;#039;Clear-to-Send (CTS)&amp;#039;&amp;#039; back to the transmitter. Any nodes overhearing this CTS packet knows the station has acquired the floor. CTS packets are repeated long enough for the benefit of any hidden sender did not register another node&amp;#039;s RTS.&lt;br /&gt;
&lt;br /&gt;
With CC430 chip including Automatic Clear Channel Assessment that uses carrier sensing, it is arbitrary that the non-persistent carrier sensing should be used.&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
[[File:Packet_Format.png]]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Maximum stable transfer speed&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
* Physical Layer: 215 packets/second&lt;br /&gt;
* CSMA-based Link Layer: 169 packets/second&lt;br /&gt;
* FAMA-based Link Layer: 22 packets/second&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* CC430 development boards from Olimex were used as development targets throughout this project ([http://au.element14.com/olimex/msp430-ccrf/cc430f5137-transceiver-dev-board/dp/2061336 MSP430-CCRF])&lt;br /&gt;
* Various MSP430 LaunchPads were utilized as debugger and programmer, including:&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430g2.html#tabs MSP430G2553 LaunchPad]: hardware not recognized in Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430fr4133.html#tabs MSP430FR4133 LaunchPad]: added feature of power measurement, compatible with both Windows and Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430f5529lp.html#tabs MSP430F5529 LaunchPad]: compatible with both Windows and Mac OS.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
* Version: 6.1.1&lt;br /&gt;
* Compiler version: 4.4.4&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
* Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
* Provide a quick description of how to use this tool for readers&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3919</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3919"/>
		<updated>2015-10-21T12:40:17Z</updated>

		<summary type="html">&lt;p&gt;A1627539: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
While implementing individual layers may lead to increased memory use due to duplicated buffers on various layers, it was chosen to specifically not to use cross-layer implementation as we wanted to:&lt;br /&gt;
&lt;br /&gt;
* Use abstraction to simplify the development process&lt;br /&gt;
* Allow higher layers to be ported to other platforms as technology improves&lt;br /&gt;
* Allow lower layers to be used easily without higher layers as to customized to use in smaller microcontrollers, projects that does not require extra complexity of higher layers, etc.&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
With the wireless medium being tightly controlled, most wireless ad-hoc network applications operates in the ISM band, which is free from licensing. This means that there is limited channel bandwidth, much less than that of a wired network. Additionally, being wireless, there are many factors that can degrade the quality of the signal, such as noise and interference from other sources.&lt;br /&gt;
&lt;br /&gt;
The Link Layer, sometimes referred to as a MAC layer, involves the functions and procedures to transfer data between two or more nodes in-range of the network. Its primary responsibility is to ensure that data is correct before the user application has access to them and discard incorrect data as it receives. &lt;br /&gt;
&lt;br /&gt;
Furthermore, for data transmission utilizing multi-hop, a link layer must also facilitates safe-guards against [https://en.wikipedia.org/wiki/Hidden_node_problem hidden-] and [https://en.wikipedia.org/wiki/Exposed_node_problem exposed-] terminal problems.&lt;br /&gt;
&lt;br /&gt;
Link Layer protocols commonly used in embedded systems belongs to the &amp;#039;&amp;#039;contention-based&amp;#039;&amp;#039; classification. This means that they are aware of the risks of collisions of transmitted data, while &amp;#039;&amp;#039;contention-free&amp;#039;&amp;#039; protocols commonly used in mobile phone networks, are more applicable to static networks with centralized control.&lt;br /&gt;
&lt;br /&gt;
Utilizing a single channel with limited hardware processing power and aimed to be low power, two implementations of the link layer exists in the project: pure CSMA and FAMA-NCS.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CSMA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
CSMA protocol is classified as a contention-based protocol categorized in the &amp;#039;&amp;#039;random-access&amp;#039;&amp;#039; scheme. In this protocol, a node may transmit as soon as it is ready. It is suitable for low-load systems with a large number of potential senders. &lt;br /&gt;
&lt;br /&gt;
As the CC430 chip used supporting Automatic Clear Channel Assessment on-chip [http://www.ti.com/product/cc430f5137 CC430F5137] (Listen-before-talk), the pure CSMA implementation is basically the physical layer implementation with extra address checking and buffers, ensuring that it conforms with the Link Layer interface.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FAMA-NCS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
FAMA-NCS stands for &amp;#039;&amp;#039;Floor Acquisition Multiple Access&amp;#039;&amp;#039; with &amp;#039;&amp;#039;Non-persistent carrier sensing&amp;#039;&amp;#039; ([http://link.springer.com/article/10.1023%2FA%3A1019146831447 Specification]), where &amp;#039;&amp;#039;floor&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;channel&amp;#039;&amp;#039;. It is a MACA-based scheme that makes announcements before it sends data to inform other nodes to be silent. Unlike MACA protocols, FAMA protocols require collision avoidance to be performed at both the sender and receiver nodes. &lt;br /&gt;
&lt;br /&gt;
To acquire the floor (channel), the sending node sends out a &amp;#039;&amp;#039;Request-to-Send (RTS)&amp;#039;&amp;#039;. The receiver responds with a &amp;#039;&amp;#039;Clear-to-Send (CTS)&amp;#039;&amp;#039; back to the transmitter. Any nodes overhearing this CTS packet knows the station has acquired the floor. CTS packets are repeated long enough for the benefit of any hidden sender did not register another node&amp;#039;s RTS.&lt;br /&gt;
&lt;br /&gt;
With CC430 chip including Automatic Clear Channel Assessment that uses carrier sensing, it is arbitrary that the non-persistent carrier sensing should be used.&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
[[File:Packet_Format.png]]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Maximum stable transfer speed&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
* Physical Layer: 215 packets/second&lt;br /&gt;
* CSMA-based Link Layer: 169 packets/second&lt;br /&gt;
* FAMA-based Link Layer: 22 packets/second&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* CC430 development boards from Olimex were used as development targets throughout this project ([http://au.element14.com/olimex/msp430-ccrf/cc430f5137-transceiver-dev-board/dp/2061336 MSP430-CCRF])&lt;br /&gt;
* Various MSP430 LaunchPads were utilized as debugger and programmer, including:&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430g2.html#tabs MSP430G2553 LaunchPad]: hardware not recognized in Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430fr4133.html#tabs MSP430FR4133 LaunchPad]: added feature of power measurement, compatible with both Windows and Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430f5529lp.html#tabs MSP430F5529 LaunchPad]: compatible with both Windows and Mac OS.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
* Version: 6.1.1&lt;br /&gt;
* Compiler version: 4.4.4&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3918</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3918"/>
		<updated>2015-10-21T12:39:28Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Code Composer Studio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
While implementing individual layers may lead to increased memory use due to duplicated buffers on various layers, it was chosen to specifically not to use cross-layer implementation as we wanted to:&lt;br /&gt;
&lt;br /&gt;
* Use abstraction to simplify the development process&lt;br /&gt;
* Allow higher layers to be ported to other platforms as technology improves&lt;br /&gt;
* Allow lower layers to be used easily without higher layers as to customized to use in smaller microcontrollers, projects that does not require extra complexity of higher layers, etc.&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
With the wireless medium being tightly controlled, most wireless ad-hoc network applications operates in the ISM band, which is free from licensing. This means that there is limited channel bandwidth, much less than that of a wired network. Additionally, being wireless, there are many factors that can degrade the quality of the signal, such as noise and interference from other sources.&lt;br /&gt;
&lt;br /&gt;
The Link Layer, sometimes referred to as a MAC layer, involves the functions and procedures to transfer data between two or more nodes in-range of the network. Its primary responsibility is to ensure that data is correct before the user application has access to them and discard incorrect data as it receives. &lt;br /&gt;
&lt;br /&gt;
Furthermore, for data transmission utilizing multi-hop, a link layer must also facilitates safe-guards against [https://en.wikipedia.org/wiki/Hidden_node_problem hidden-] and [https://en.wikipedia.org/wiki/Exposed_node_problem exposed-] terminal problems.&lt;br /&gt;
&lt;br /&gt;
Link Layer protocols commonly used in embedded systems belongs to the &amp;#039;&amp;#039;contention-based&amp;#039;&amp;#039; classification. This means that they are aware of the risks of collisions of transmitted data, while &amp;#039;&amp;#039;contention-free&amp;#039;&amp;#039; protocols commonly used in mobile phone networks, are more applicable to static networks with centralized control.&lt;br /&gt;
&lt;br /&gt;
Utilizing a single channel with limited hardware processing power and aimed to be low power, two implementations of the link layer exists in the project: pure CSMA and FAMA-NCS.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CSMA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
CSMA protocol is classified as a contention-based protocol categorized in the &amp;#039;&amp;#039;random-access&amp;#039;&amp;#039; scheme. In this protocol, a node may transmit as soon as it is ready. It is suitable for low-load systems with a large number of potential senders. &lt;br /&gt;
&lt;br /&gt;
As the CC430 chip used supporting Automatic Clear Channel Assessment on-chip [http://www.ti.com/product/cc430f5137 CC430F5137] (Listen-before-talk), the pure CSMA implementation is basically the physical layer implementation with extra address checking and buffers, ensuring that it conforms with the Link Layer interface.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FAMA-NCS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
FAMA-NCS stands for &amp;#039;&amp;#039;Floor Acquisition Multiple Access&amp;#039;&amp;#039; with &amp;#039;&amp;#039;Non-persistent carrier sensing&amp;#039;&amp;#039; ([http://link.springer.com/article/10.1023%2FA%3A1019146831447 Specification]), where &amp;#039;&amp;#039;floor&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;channel&amp;#039;&amp;#039;. It is a MACA-based scheme that makes announcements before it sends data to inform other nodes to be silent. Unlike MACA protocols, FAMA protocols require collision avoidance to be performed at both the sender and receiver nodes. &lt;br /&gt;
&lt;br /&gt;
To acquire the floor (channel), the sending node sends out a &amp;#039;&amp;#039;Request-to-Send (RTS)&amp;#039;&amp;#039;. The receiver responds with a &amp;#039;&amp;#039;Clear-to-Send (CTS)&amp;#039;&amp;#039; back to the transmitter. Any nodes overhearing this CTS packet knows the station has acquired the floor. CTS packets are repeated long enough for the benefit of any hidden sender did not register another node&amp;#039;s RTS.&lt;br /&gt;
&lt;br /&gt;
With CC430 chip including Automatic Clear Channel Assessment that uses carrier sensing, it is arbitrary that the non-persistent carrier sensing should be used.&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
[[File:Packet_Format.png]]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Maximum stable transfer speed&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
* Physical Layer: 215 packets/second&lt;br /&gt;
* CSMA-based Link Layer: 169 packets/second&lt;br /&gt;
* FAMA-based Link Layer: 22 packets/second&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* CC430 development boards from Olimex were used as development targets throughout this project ([http://au.element14.com/olimex/msp430-ccrf/cc430f5137-transceiver-dev-board/dp/2061336 MSP430-CCRF])&lt;br /&gt;
* Various MSP430 LaunchPads were utilized as debugger and programmer, including:&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430g2.html#tabs MSP430G2553 LaunchPad]: hardware not recognized in Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430fr4133.html#tabs MSP430FR4133 LaunchPad]: added feature of power measurement, compatible with both Windows and Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430f5529lp.html#tabs MSP430F5529 LaunchPad]: compatible with both Windows and Mac OS.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
* Version: 6.1.1&lt;br /&gt;
* Compiler version: 4.4.4&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3917</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3917"/>
		<updated>2015-10-21T12:38:33Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Field Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
While implementing individual layers may lead to increased memory use due to duplicated buffers on various layers, it was chosen to specifically not to use cross-layer implementation as we wanted to:&lt;br /&gt;
&lt;br /&gt;
* Use abstraction to simplify the development process&lt;br /&gt;
* Allow higher layers to be ported to other platforms as technology improves&lt;br /&gt;
* Allow lower layers to be used easily without higher layers as to customized to use in smaller microcontrollers, projects that does not require extra complexity of higher layers, etc.&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
With the wireless medium being tightly controlled, most wireless ad-hoc network applications operates in the ISM band, which is free from licensing. This means that there is limited channel bandwidth, much less than that of a wired network. Additionally, being wireless, there are many factors that can degrade the quality of the signal, such as noise and interference from other sources.&lt;br /&gt;
&lt;br /&gt;
The Link Layer, sometimes referred to as a MAC layer, involves the functions and procedures to transfer data between two or more nodes in-range of the network. Its primary responsibility is to ensure that data is correct before the user application has access to them and discard incorrect data as it receives. &lt;br /&gt;
&lt;br /&gt;
Furthermore, for data transmission utilizing multi-hop, a link layer must also facilitates safe-guards against [https://en.wikipedia.org/wiki/Hidden_node_problem hidden-] and [https://en.wikipedia.org/wiki/Exposed_node_problem exposed-] terminal problems.&lt;br /&gt;
&lt;br /&gt;
Link Layer protocols commonly used in embedded systems belongs to the &amp;#039;&amp;#039;contention-based&amp;#039;&amp;#039; classification. This means that they are aware of the risks of collisions of transmitted data, while &amp;#039;&amp;#039;contention-free&amp;#039;&amp;#039; protocols commonly used in mobile phone networks, are more applicable to static networks with centralized control.&lt;br /&gt;
&lt;br /&gt;
Utilizing a single channel with limited hardware processing power and aimed to be low power, two implementations of the link layer exists in the project: pure CSMA and FAMA-NCS.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CSMA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
CSMA protocol is classified as a contention-based protocol categorized in the &amp;#039;&amp;#039;random-access&amp;#039;&amp;#039; scheme. In this protocol, a node may transmit as soon as it is ready. It is suitable for low-load systems with a large number of potential senders. &lt;br /&gt;
&lt;br /&gt;
As the CC430 chip used supporting Automatic Clear Channel Assessment on-chip [http://www.ti.com/product/cc430f5137 CC430F5137] (Listen-before-talk), the pure CSMA implementation is basically the physical layer implementation with extra address checking and buffers, ensuring that it conforms with the Link Layer interface.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FAMA-NCS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
FAMA-NCS stands for &amp;#039;&amp;#039;Floor Acquisition Multiple Access&amp;#039;&amp;#039; with &amp;#039;&amp;#039;Non-persistent carrier sensing&amp;#039;&amp;#039; ([http://link.springer.com/article/10.1023%2FA%3A1019146831447 Specification]), where &amp;#039;&amp;#039;floor&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;channel&amp;#039;&amp;#039;. It is a MACA-based scheme that makes announcements before it sends data to inform other nodes to be silent. Unlike MACA protocols, FAMA protocols require collision avoidance to be performed at both the sender and receiver nodes. &lt;br /&gt;
&lt;br /&gt;
To acquire the floor (channel), the sending node sends out a &amp;#039;&amp;#039;Request-to-Send (RTS)&amp;#039;&amp;#039;. The receiver responds with a &amp;#039;&amp;#039;Clear-to-Send (CTS)&amp;#039;&amp;#039; back to the transmitter. Any nodes overhearing this CTS packet knows the station has acquired the floor. CTS packets are repeated long enough for the benefit of any hidden sender did not register another node&amp;#039;s RTS.&lt;br /&gt;
&lt;br /&gt;
With CC430 chip including Automatic Clear Channel Assessment that uses carrier sensing, it is arbitrary that the non-persistent carrier sensing should be used.&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
[[File:Packet_Format.png]]&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Maximum stable transfer speed&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
* Physical Layer: 215 packets/second&lt;br /&gt;
* CSMA-based Link Layer: 169 packets/second&lt;br /&gt;
* FAMA-based Link Layer: 22 packets/second&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* CC430 development boards from Olimex were used as development targets throughout this project ([http://au.element14.com/olimex/msp430-ccrf/cc430f5137-transceiver-dev-board/dp/2061336 MSP430-CCRF])&lt;br /&gt;
* Various MSP430 LaunchPads were utilized as debugger and programmer, including:&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430g2.html#tabs MSP430G2553 LaunchPad]: hardware not recognized in Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430fr4133.html#tabs MSP430FR4133 LaunchPad]: added feature of power measurement, compatible with both Windows and Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430f5529lp.html#tabs MSP430F5529 LaunchPad]: compatible with both Windows and Mac OS.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3915</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3915"/>
		<updated>2015-10-21T12:35:44Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Packet Format */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
While implementing individual layers may lead to increased memory use due to duplicated buffers on various layers, it was chosen to specifically not to use cross-layer implementation as we wanted to:&lt;br /&gt;
&lt;br /&gt;
* Use abstraction to simplify the development process&lt;br /&gt;
* Allow higher layers to be ported to other platforms as technology improves&lt;br /&gt;
* Allow lower layers to be used easily without higher layers as to customized to use in smaller microcontrollers, projects that does not require extra complexity of higher layers, etc.&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
With the wireless medium being tightly controlled, most wireless ad-hoc network applications operates in the ISM band, which is free from licensing. This means that there is limited channel bandwidth, much less than that of a wired network. Additionally, being wireless, there are many factors that can degrade the quality of the signal, such as noise and interference from other sources.&lt;br /&gt;
&lt;br /&gt;
The Link Layer, sometimes referred to as a MAC layer, involves the functions and procedures to transfer data between two or more nodes in-range of the network. Its primary responsibility is to ensure that data is correct before the user application has access to them and discard incorrect data as it receives. &lt;br /&gt;
&lt;br /&gt;
Furthermore, for data transmission utilizing multi-hop, a link layer must also facilitates safe-guards against [https://en.wikipedia.org/wiki/Hidden_node_problem hidden-] and [https://en.wikipedia.org/wiki/Exposed_node_problem exposed-] terminal problems.&lt;br /&gt;
&lt;br /&gt;
Link Layer protocols commonly used in embedded systems belongs to the &amp;#039;&amp;#039;contention-based&amp;#039;&amp;#039; classification. This means that they are aware of the risks of collisions of transmitted data, while &amp;#039;&amp;#039;contention-free&amp;#039;&amp;#039; protocols commonly used in mobile phone networks, are more applicable to static networks with centralized control.&lt;br /&gt;
&lt;br /&gt;
Utilizing a single channel with limited hardware processing power and aimed to be low power, two implementations of the link layer exists in the project: pure CSMA and FAMA-NCS.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CSMA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
CSMA protocol is classified as a contention-based protocol categorized in the &amp;#039;&amp;#039;random-access&amp;#039;&amp;#039; scheme. In this protocol, a node may transmit as soon as it is ready. It is suitable for low-load systems with a large number of potential senders. &lt;br /&gt;
&lt;br /&gt;
As the CC430 chip used supporting Automatic Clear Channel Assessment on-chip [http://www.ti.com/product/cc430f5137 CC430F5137] (Listen-before-talk), the pure CSMA implementation is basically the physical layer implementation with extra address checking and buffers, ensuring that it conforms with the Link Layer interface.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FAMA-NCS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
FAMA-NCS stands for &amp;#039;&amp;#039;Floor Acquisition Multiple Access&amp;#039;&amp;#039; with &amp;#039;&amp;#039;Non-persistent carrier sensing&amp;#039;&amp;#039; ([http://link.springer.com/article/10.1023%2FA%3A1019146831447 Specification]), where &amp;#039;&amp;#039;floor&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;channel&amp;#039;&amp;#039;. It is a MACA-based scheme that makes announcements before it sends data to inform other nodes to be silent. Unlike MACA protocols, FAMA protocols require collision avoidance to be performed at both the sender and receiver nodes. &lt;br /&gt;
&lt;br /&gt;
To acquire the floor (channel), the sending node sends out a &amp;#039;&amp;#039;Request-to-Send (RTS)&amp;#039;&amp;#039;. The receiver responds with a &amp;#039;&amp;#039;Clear-to-Send (CTS)&amp;#039;&amp;#039; back to the transmitter. Any nodes overhearing this CTS packet knows the station has acquired the floor. CTS packets are repeated long enough for the benefit of any hidden sender did not register another node&amp;#039;s RTS.&lt;br /&gt;
&lt;br /&gt;
With CC430 chip including Automatic Clear Channel Assessment that uses carrier sensing, it is arbitrary that the non-persistent carrier sensing should be used.&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
[[File:Packet_Format.png]]&lt;br /&gt;
&lt;br /&gt;
== Field Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* CC430 development boards from Olimex were used as development targets throughout this project ([http://au.element14.com/olimex/msp430-ccrf/cc430f5137-transceiver-dev-board/dp/2061336 MSP430-CCRF])&lt;br /&gt;
* Various MSP430 LaunchPads were utilized as debugger and programmer, including:&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430g2.html#tabs MSP430G2553 LaunchPad]: hardware not recognized in Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430fr4133.html#tabs MSP430FR4133 LaunchPad]: added feature of power measurement, compatible with both Windows and Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430f5529lp.html#tabs MSP430F5529 LaunchPad]: compatible with both Windows and Mac OS.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3914</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3914"/>
		<updated>2015-10-21T12:35:22Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Link Layer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
While implementing individual layers may lead to increased memory use due to duplicated buffers on various layers, it was chosen to specifically not to use cross-layer implementation as we wanted to:&lt;br /&gt;
&lt;br /&gt;
* Use abstraction to simplify the development process&lt;br /&gt;
* Allow higher layers to be ported to other platforms as technology improves&lt;br /&gt;
* Allow lower layers to be used easily without higher layers as to customized to use in smaller microcontrollers, projects that does not require extra complexity of higher layers, etc.&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
With the wireless medium being tightly controlled, most wireless ad-hoc network applications operates in the ISM band, which is free from licensing. This means that there is limited channel bandwidth, much less than that of a wired network. Additionally, being wireless, there are many factors that can degrade the quality of the signal, such as noise and interference from other sources.&lt;br /&gt;
&lt;br /&gt;
The Link Layer, sometimes referred to as a MAC layer, involves the functions and procedures to transfer data between two or more nodes in-range of the network. Its primary responsibility is to ensure that data is correct before the user application has access to them and discard incorrect data as it receives. &lt;br /&gt;
&lt;br /&gt;
Furthermore, for data transmission utilizing multi-hop, a link layer must also facilitates safe-guards against [https://en.wikipedia.org/wiki/Hidden_node_problem hidden-] and [https://en.wikipedia.org/wiki/Exposed_node_problem exposed-] terminal problems.&lt;br /&gt;
&lt;br /&gt;
Link Layer protocols commonly used in embedded systems belongs to the &amp;#039;&amp;#039;contention-based&amp;#039;&amp;#039; classification. This means that they are aware of the risks of collisions of transmitted data, while &amp;#039;&amp;#039;contention-free&amp;#039;&amp;#039; protocols commonly used in mobile phone networks, are more applicable to static networks with centralized control.&lt;br /&gt;
&lt;br /&gt;
Utilizing a single channel with limited hardware processing power and aimed to be low power, two implementations of the link layer exists in the project: pure CSMA and FAMA-NCS.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CSMA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
CSMA protocol is classified as a contention-based protocol categorized in the &amp;#039;&amp;#039;random-access&amp;#039;&amp;#039; scheme. In this protocol, a node may transmit as soon as it is ready. It is suitable for low-load systems with a large number of potential senders. &lt;br /&gt;
&lt;br /&gt;
As the CC430 chip used supporting Automatic Clear Channel Assessment on-chip [http://www.ti.com/product/cc430f5137 CC430F5137] (Listen-before-talk), the pure CSMA implementation is basically the physical layer implementation with extra address checking and buffers, ensuring that it conforms with the Link Layer interface.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FAMA-NCS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
FAMA-NCS stands for &amp;#039;&amp;#039;Floor Acquisition Multiple Access&amp;#039;&amp;#039; with &amp;#039;&amp;#039;Non-persistent carrier sensing&amp;#039;&amp;#039; ([http://link.springer.com/article/10.1023%2FA%3A1019146831447 Specification]), where &amp;#039;&amp;#039;floor&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;channel&amp;#039;&amp;#039;. It is a MACA-based scheme that makes announcements before it sends data to inform other nodes to be silent. Unlike MACA protocols, FAMA protocols require collision avoidance to be performed at both the sender and receiver nodes. &lt;br /&gt;
&lt;br /&gt;
To acquire the floor (channel), the sending node sends out a &amp;#039;&amp;#039;Request-to-Send (RTS)&amp;#039;&amp;#039;. The receiver responds with a &amp;#039;&amp;#039;Clear-to-Send (CTS)&amp;#039;&amp;#039; back to the transmitter. Any nodes overhearing this CTS packet knows the station has acquired the floor. CTS packets are repeated long enough for the benefit of any hidden sender did not register another node&amp;#039;s RTS.&lt;br /&gt;
&lt;br /&gt;
With CC430 chip including Automatic Clear Channel Assessment that uses carrier sensing, it is arbitrary that the non-persistent carrier sensing should be used.&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
[[File:Packet_Format.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Field Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* CC430 development boards from Olimex were used as development targets throughout this project ([http://au.element14.com/olimex/msp430-ccrf/cc430f5137-transceiver-dev-board/dp/2061336 MSP430-CCRF])&lt;br /&gt;
* Various MSP430 LaunchPads were utilized as debugger and programmer, including:&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430g2.html#tabs MSP430G2553 LaunchPad]: hardware not recognized in Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430fr4133.html#tabs MSP430FR4133 LaunchPad]: added feature of power measurement, compatible with both Windows and Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430f5529lp.html#tabs MSP430F5529 LaunchPad]: compatible with both Windows and Mac OS.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3737</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3737"/>
		<updated>2015-10-07T09:09:37Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Development Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
While implementing individual layers may lead to increased memory use due to duplicated buffers on various layers, it was chosen to specifically not to use cross-layer implementation as we wanted to:&lt;br /&gt;
&lt;br /&gt;
* Use abstraction to simplify the development process&lt;br /&gt;
* Allow higher layers to be ported to other platforms as technology improves&lt;br /&gt;
* Allow lower layers to be used easily without higher layers as to customized to use in smaller microcontrollers, projects that does not require extra complexity of higher layers, etc.&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
With the wireless medium being tightly controlled, most wireless ad-hoc network applications operates in the ISM band, which is free from licensing. This means that there is limited channel bandwidth, much less than that of a wired network. Additionally, being wireless, there are many factors that can degrade the quality of the signal, such as noise and interference from other sources.&lt;br /&gt;
&lt;br /&gt;
The Link Layer, sometimes referred to as a MAC layer, involves the functions and procedures to transfer data between two or more nodes in-range of the network. Its primary responsibility is to ensure that data is correct before the user application has access to them and discard incorrect data as it receives. &lt;br /&gt;
&lt;br /&gt;
Furthermore, for data transmission utilizing multi-hop, a link layer must also facilitates safe-guards against [https://en.wikipedia.org/wiki/Hidden_node_problem hidden-] and [https://en.wikipedia.org/wiki/Exposed_node_problem exposed-] terminal problems.&lt;br /&gt;
&lt;br /&gt;
Link Layer protocols commonly used in embedded systems belongs to the &amp;#039;&amp;#039;contention-based&amp;#039;&amp;#039; classification. This means that they are aware of the risks of collisions of transmitted data, while &amp;#039;&amp;#039;contention-free&amp;#039;&amp;#039; protocols commonly used in mobile phone networks, are more applicable to static networks with centralized control.&lt;br /&gt;
&lt;br /&gt;
Utilizing a single channel with limited hardware processing power and aimed to be low power, two implementations of the link layer exists in the project: pure ALOHA and FAMA-NCS.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Pure ALOHA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Pure ALOHA protocol is classified as a contention-based protocol categorized in the &amp;#039;&amp;#039;random-access&amp;#039;&amp;#039; scheme. In this protocol, a node may transmit as soon as it is ready. It is suitable for low-load systems with a large number of potential senders. &lt;br /&gt;
&lt;br /&gt;
As the CC430 chip used supporting Automatic Clear Channel Assessment on-chip [http://www.ti.com/product/cc430f5137 CC430F5137] (Listen-before-talk), the pure ALOHA implementation is basically the physical layer implementation with extra address checking and buffers, ensuring that it conforms with the Link Layer interface.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FAMA-NCS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
FAMA-NCS stands for &amp;#039;&amp;#039;Floor Acquisition Multiple Access&amp;#039;&amp;#039; with &amp;#039;&amp;#039;Non-persistent carrier sensing&amp;#039;&amp;#039; ([http://link.springer.com/article/10.1023%2FA%3A1019146831447 Specification]), where &amp;#039;&amp;#039;floor&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;channel&amp;#039;&amp;#039;. It is a MACA-based scheme that makes announcements before it sends data to inform other nodes to be silent. Unlike MACA protocols, FAMA protocols require collision avoidance to be performed at both the sender and receiver nodes. &lt;br /&gt;
&lt;br /&gt;
To acquire the floor (channel), the sending node sends out a &amp;#039;&amp;#039;Request-to-Send (RTS)&amp;#039;&amp;#039;. The receiver responds with a &amp;#039;&amp;#039;Clear-to-Send (CTS)&amp;#039;&amp;#039; back to the transmitter. Any nodes overhearing this CTS packet knows the station has acquired the floor. CTS packets are repeated long enough for the benefit of any hidden sender did not register another node&amp;#039;s RTS.&lt;br /&gt;
&lt;br /&gt;
With CC430 chip including Automatic Clear Channel Assessment that uses carrier sensing, it is arbitrary that the non-persistent carrier sensing should be used.&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
[[File:Packet_Format.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Field Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* CC430 development boards from Olimex were used as development targets throughout this project ([http://au.element14.com/olimex/msp430-ccrf/cc430f5137-transceiver-dev-board/dp/2061336 MSP430-CCRF])&lt;br /&gt;
* Various MSP430 LaunchPads were utilized as debugger and programmer, including:&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430g2.html#tabs MSP430G2553 LaunchPad]: hardware not recognized in Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430fr4133.html#tabs MSP430FR4133 LaunchPad]: added feature of power measurement, compatible with both Windows and Mac OS.&lt;br /&gt;
** [http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430f5529lp.html#tabs MSP430F5529 LaunchPad]: compatible with both Windows and Mac OS.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3736</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3736"/>
		<updated>2015-10-07T08:52:15Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Packet Format */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
While implementing individual layers may lead to increased memory use due to duplicated buffers on various layers, it was chosen to specifically not to use cross-layer implementation as we wanted to:&lt;br /&gt;
&lt;br /&gt;
* Use abstraction to simplify the development process&lt;br /&gt;
* Allow higher layers to be ported to other platforms as technology improves&lt;br /&gt;
* Allow lower layers to be used easily without higher layers as to customized to use in smaller microcontrollers, projects that does not require extra complexity of higher layers, etc.&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
With the wireless medium being tightly controlled, most wireless ad-hoc network applications operates in the ISM band, which is free from licensing. This means that there is limited channel bandwidth, much less than that of a wired network. Additionally, being wireless, there are many factors that can degrade the quality of the signal, such as noise and interference from other sources.&lt;br /&gt;
&lt;br /&gt;
The Link Layer, sometimes referred to as a MAC layer, involves the functions and procedures to transfer data between two or more nodes in-range of the network. Its primary responsibility is to ensure that data is correct before the user application has access to them and discard incorrect data as it receives. &lt;br /&gt;
&lt;br /&gt;
Furthermore, for data transmission utilizing multi-hop, a link layer must also facilitates safe-guards against [https://en.wikipedia.org/wiki/Hidden_node_problem hidden-] and [https://en.wikipedia.org/wiki/Exposed_node_problem exposed-] terminal problems.&lt;br /&gt;
&lt;br /&gt;
Link Layer protocols commonly used in embedded systems belongs to the &amp;#039;&amp;#039;contention-based&amp;#039;&amp;#039; classification. This means that they are aware of the risks of collisions of transmitted data, while &amp;#039;&amp;#039;contention-free&amp;#039;&amp;#039; protocols commonly used in mobile phone networks, are more applicable to static networks with centralized control.&lt;br /&gt;
&lt;br /&gt;
Utilizing a single channel with limited hardware processing power and aimed to be low power, two implementations of the link layer exists in the project: pure ALOHA and FAMA-NCS.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Pure ALOHA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Pure ALOHA protocol is classified as a contention-based protocol categorized in the &amp;#039;&amp;#039;random-access&amp;#039;&amp;#039; scheme. In this protocol, a node may transmit as soon as it is ready. It is suitable for low-load systems with a large number of potential senders. &lt;br /&gt;
&lt;br /&gt;
As the CC430 chip used supporting Automatic Clear Channel Assessment on-chip [http://www.ti.com/product/cc430f5137 CC430F5137] (Listen-before-talk), the pure ALOHA implementation is basically the physical layer implementation with extra address checking and buffers, ensuring that it conforms with the Link Layer interface.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FAMA-NCS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
FAMA-NCS stands for &amp;#039;&amp;#039;Floor Acquisition Multiple Access&amp;#039;&amp;#039; with &amp;#039;&amp;#039;Non-persistent carrier sensing&amp;#039;&amp;#039; ([http://link.springer.com/article/10.1023%2FA%3A1019146831447 Specification]), where &amp;#039;&amp;#039;floor&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;channel&amp;#039;&amp;#039;. It is a MACA-based scheme that makes announcements before it sends data to inform other nodes to be silent. Unlike MACA protocols, FAMA protocols require collision avoidance to be performed at both the sender and receiver nodes. &lt;br /&gt;
&lt;br /&gt;
To acquire the floor (channel), the sending node sends out a &amp;#039;&amp;#039;Request-to-Send (RTS)&amp;#039;&amp;#039;. The receiver responds with a &amp;#039;&amp;#039;Clear-to-Send (CTS)&amp;#039;&amp;#039; back to the transmitter. Any nodes overhearing this CTS packet knows the station has acquired the floor. CTS packets are repeated long enough for the benefit of any hidden sender did not register another node&amp;#039;s RTS.&lt;br /&gt;
&lt;br /&gt;
With CC430 chip including Automatic Clear Channel Assessment that uses carrier sensing, it is arbitrary that the non-persistent carrier sensing should be used.&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
[[File:Packet_Format.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Field Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=File:Packet_Format.png&amp;diff=3735</id>
		<title>File:Packet Format.png</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=File:Packet_Format.png&amp;diff=3735"/>
		<updated>2015-10-07T08:51:08Z</updated>

		<summary type="html">&lt;p&gt;A1627539: Packet format for Project 40&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Packet format for Project 40&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3734</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3734"/>
		<updated>2015-10-05T23:25:01Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Packet Format */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
While implementing individual layers may lead to increased memory use due to duplicated buffers on various layers, it was chosen to specifically not to use cross-layer implementation as we wanted to:&lt;br /&gt;
&lt;br /&gt;
* Use abstraction to simplify the development process&lt;br /&gt;
* Allow higher layers to be ported to other platforms as technology improves&lt;br /&gt;
* Allow lower layers to be used easily without higher layers as to customized to use in smaller microcontrollers, projects that does not require extra complexity of higher layers, etc.&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
With the wireless medium being tightly controlled, most wireless ad-hoc network applications operates in the ISM band, which is free from licensing. This means that there is limited channel bandwidth, much less than that of a wired network. Additionally, being wireless, there are many factors that can degrade the quality of the signal, such as noise and interference from other sources.&lt;br /&gt;
&lt;br /&gt;
The Link Layer, sometimes referred to as a MAC layer, involves the functions and procedures to transfer data between two or more nodes in-range of the network. Its primary responsibility is to ensure that data is correct before the user application has access to them and discard incorrect data as it receives. &lt;br /&gt;
&lt;br /&gt;
Furthermore, for data transmission utilizing multi-hop, a link layer must also facilitates safe-guards against [https://en.wikipedia.org/wiki/Hidden_node_problem hidden-] and [https://en.wikipedia.org/wiki/Exposed_node_problem exposed-] terminal problems.&lt;br /&gt;
&lt;br /&gt;
Link Layer protocols commonly used in embedded systems belongs to the &amp;#039;&amp;#039;contention-based&amp;#039;&amp;#039; classification. This means that they are aware of the risks of collisions of transmitted data, while &amp;#039;&amp;#039;contention-free&amp;#039;&amp;#039; protocols commonly used in mobile phone networks, are more applicable to static networks with centralized control.&lt;br /&gt;
&lt;br /&gt;
Utilizing a single channel with limited hardware processing power and aimed to be low power, two implementations of the link layer exists in the project: pure ALOHA and FAMA-NCS.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Pure ALOHA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Pure ALOHA protocol is classified as a contention-based protocol categorized in the &amp;#039;&amp;#039;random-access&amp;#039;&amp;#039; scheme. In this protocol, a node may transmit as soon as it is ready. It is suitable for low-load systems with a large number of potential senders. &lt;br /&gt;
&lt;br /&gt;
As the CC430 chip used supporting Automatic Clear Channel Assessment on-chip [http://www.ti.com/product/cc430f5137 CC430F5137] (Listen-before-talk), the pure ALOHA implementation is basically the physical layer implementation with extra address checking and buffers, ensuring that it conforms with the Link Layer interface.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FAMA-NCS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
FAMA-NCS stands for &amp;#039;&amp;#039;Floor Acquisition Multiple Access&amp;#039;&amp;#039; with &amp;#039;&amp;#039;Non-persistent carrier sensing&amp;#039;&amp;#039; ([http://link.springer.com/article/10.1023%2FA%3A1019146831447 Specification]), where &amp;#039;&amp;#039;floor&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;channel&amp;#039;&amp;#039;. It is a MACA-based scheme that makes announcements before it sends data to inform other nodes to be silent. Unlike MACA protocols, FAMA protocols require collision avoidance to be performed at both the sender and receiver nodes. &lt;br /&gt;
&lt;br /&gt;
To acquire the floor (channel), the sending node sends out a &amp;#039;&amp;#039;Request-to-Send (RTS)&amp;#039;&amp;#039;. The receiver responds with a &amp;#039;&amp;#039;Clear-to-Send (CTS)&amp;#039;&amp;#039; back to the transmitter. Any nodes overhearing this CTS packet knows the station has acquired the floor. CTS packets are repeated long enough for the benefit of any hidden sender did not register another node&amp;#039;s RTS.&lt;br /&gt;
&lt;br /&gt;
With CC430 chip including Automatic Clear Channel Assessment that uses carrier sensing, it is arbitrary that the non-persistent carrier sensing should be used.&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
[[File:http://i62.tinypic.com/d8ehl.jpg]]&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Field Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3733</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3733"/>
		<updated>2015-10-04T09:12:53Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Deliverable Test Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
While implementing individual layers may lead to increased memory use due to duplicated buffers on various layers, it was chosen to specifically not to use cross-layer implementation as we wanted to:&lt;br /&gt;
&lt;br /&gt;
* Use abstraction to simplify the development process&lt;br /&gt;
* Allow higher layers to be ported to other platforms as technology improves&lt;br /&gt;
* Allow lower layers to be used easily without higher layers as to customized to use in smaller microcontrollers, projects that does not require extra complexity of higher layers, etc.&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
With the wireless medium being tightly controlled, most wireless ad-hoc network applications operates in the ISM band, which is free from licensing. This means that there is limited channel bandwidth, much less than that of a wired network. Additionally, being wireless, there are many factors that can degrade the quality of the signal, such as noise and interference from other sources.&lt;br /&gt;
&lt;br /&gt;
The Link Layer, sometimes referred to as a MAC layer, involves the functions and procedures to transfer data between two or more nodes in-range of the network. Its primary responsibility is to ensure that data is correct before the user application has access to them and discard incorrect data as it receives. &lt;br /&gt;
&lt;br /&gt;
Furthermore, for data transmission utilizing multi-hop, a link layer must also facilitates safe-guards against [https://en.wikipedia.org/wiki/Hidden_node_problem hidden-] and [https://en.wikipedia.org/wiki/Exposed_node_problem exposed-] terminal problems.&lt;br /&gt;
&lt;br /&gt;
Link Layer protocols commonly used in embedded systems belongs to the &amp;#039;&amp;#039;contention-based&amp;#039;&amp;#039; classification. This means that they are aware of the risks of collisions of transmitted data, while &amp;#039;&amp;#039;contention-free&amp;#039;&amp;#039; protocols commonly used in mobile phone networks, are more applicable to static networks with centralized control.&lt;br /&gt;
&lt;br /&gt;
Utilizing a single channel with limited hardware processing power and aimed to be low power, two implementations of the link layer exists in the project: pure ALOHA and FAMA-NCS.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Pure ALOHA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Pure ALOHA protocol is classified as a contention-based protocol categorized in the &amp;#039;&amp;#039;random-access&amp;#039;&amp;#039; scheme. In this protocol, a node may transmit as soon as it is ready. It is suitable for low-load systems with a large number of potential senders. &lt;br /&gt;
&lt;br /&gt;
As the CC430 chip used supporting Automatic Clear Channel Assessment on-chip [http://www.ti.com/product/cc430f5137 CC430F5137] (Listen-before-talk), the pure ALOHA implementation is basically the physical layer implementation with extra address checking and buffers, ensuring that it conforms with the Link Layer interface.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FAMA-NCS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
FAMA-NCS stands for &amp;#039;&amp;#039;Floor Acquisition Multiple Access&amp;#039;&amp;#039; with &amp;#039;&amp;#039;Non-persistent carrier sensing&amp;#039;&amp;#039; ([http://link.springer.com/article/10.1023%2FA%3A1019146831447 Specification]), where &amp;#039;&amp;#039;floor&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;channel&amp;#039;&amp;#039;. It is a MACA-based scheme that makes announcements before it sends data to inform other nodes to be silent. Unlike MACA protocols, FAMA protocols require collision avoidance to be performed at both the sender and receiver nodes. &lt;br /&gt;
&lt;br /&gt;
To acquire the floor (channel), the sending node sends out a &amp;#039;&amp;#039;Request-to-Send (RTS)&amp;#039;&amp;#039;. The receiver responds with a &amp;#039;&amp;#039;Clear-to-Send (CTS)&amp;#039;&amp;#039; back to the transmitter. Any nodes overhearing this CTS packet knows the station has acquired the floor. CTS packets are repeated long enough for the benefit of any hidden sender did not register another node&amp;#039;s RTS.&lt;br /&gt;
&lt;br /&gt;
With CC430 chip including Automatic Clear Channel Assessment that uses carrier sensing, it is arbitrary that the non-persistent carrier sensing should be used.&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Field Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3732</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3732"/>
		<updated>2015-10-04T09:01:28Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Link Layer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
While implementing individual layers may lead to increased memory use due to duplicated buffers on various layers, it was chosen to specifically not to use cross-layer implementation as we wanted to:&lt;br /&gt;
&lt;br /&gt;
* Use abstraction to simplify the development process&lt;br /&gt;
* Allow higher layers to be ported to other platforms as technology improves&lt;br /&gt;
* Allow lower layers to be used easily without higher layers as to customized to use in smaller microcontrollers, projects that does not require extra complexity of higher layers, etc.&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
With the wireless medium being tightly controlled, most wireless ad-hoc network applications operates in the ISM band, which is free from licensing. This means that there is limited channel bandwidth, much less than that of a wired network. Additionally, being wireless, there are many factors that can degrade the quality of the signal, such as noise and interference from other sources.&lt;br /&gt;
&lt;br /&gt;
The Link Layer, sometimes referred to as a MAC layer, involves the functions and procedures to transfer data between two or more nodes in-range of the network. Its primary responsibility is to ensure that data is correct before the user application has access to them and discard incorrect data as it receives. &lt;br /&gt;
&lt;br /&gt;
Furthermore, for data transmission utilizing multi-hop, a link layer must also facilitates safe-guards against [https://en.wikipedia.org/wiki/Hidden_node_problem hidden-] and [https://en.wikipedia.org/wiki/Exposed_node_problem exposed-] terminal problems.&lt;br /&gt;
&lt;br /&gt;
Link Layer protocols commonly used in embedded systems belongs to the &amp;#039;&amp;#039;contention-based&amp;#039;&amp;#039; classification. This means that they are aware of the risks of collisions of transmitted data, while &amp;#039;&amp;#039;contention-free&amp;#039;&amp;#039; protocols commonly used in mobile phone networks, are more applicable to static networks with centralized control.&lt;br /&gt;
&lt;br /&gt;
Utilizing a single channel with limited hardware processing power and aimed to be low power, two implementations of the link layer exists in the project: pure ALOHA and FAMA-NCS.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Pure ALOHA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Pure ALOHA protocol is classified as a contention-based protocol categorized in the &amp;#039;&amp;#039;random-access&amp;#039;&amp;#039; scheme. In this protocol, a node may transmit as soon as it is ready. It is suitable for low-load systems with a large number of potential senders. &lt;br /&gt;
&lt;br /&gt;
As the CC430 chip used supporting Automatic Clear Channel Assessment on-chip [http://www.ti.com/product/cc430f5137 CC430F5137] (Listen-before-talk), the pure ALOHA implementation is basically the physical layer implementation with extra address checking and buffers, ensuring that it conforms with the Link Layer interface.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FAMA-NCS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
FAMA-NCS stands for &amp;#039;&amp;#039;Floor Acquisition Multiple Access&amp;#039;&amp;#039; with &amp;#039;&amp;#039;Non-persistent carrier sensing&amp;#039;&amp;#039; ([http://link.springer.com/article/10.1023%2FA%3A1019146831447 Specification]), where &amp;#039;&amp;#039;floor&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;channel&amp;#039;&amp;#039;. It is a MACA-based scheme that makes announcements before it sends data to inform other nodes to be silent. Unlike MACA protocols, FAMA protocols require collision avoidance to be performed at both the sender and receiver nodes. &lt;br /&gt;
&lt;br /&gt;
To acquire the floor (channel), the sending node sends out a &amp;#039;&amp;#039;Request-to-Send (RTS)&amp;#039;&amp;#039;. The receiver responds with a &amp;#039;&amp;#039;Clear-to-Send (CTS)&amp;#039;&amp;#039; back to the transmitter. Any nodes overhearing this CTS packet knows the station has acquired the floor. CTS packets are repeated long enough for the benefit of any hidden sender did not register another node&amp;#039;s RTS.&lt;br /&gt;
&lt;br /&gt;
With CC430 chip including Automatic Clear Channel Assessment that uses carrier sensing, it is arbitrary that the non-persistent carrier sensing should be used.&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Deliverable Test Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3731</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3731"/>
		<updated>2015-10-04T08:12:28Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Link Layer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
While implementing individual layers may lead to increased memory use due to duplicated buffers on various layers, it was chosen to specifically not to use cross-layer implementation as we wanted to:&lt;br /&gt;
&lt;br /&gt;
* Use abstraction to simplify the development process&lt;br /&gt;
* Allow higher layers to be ported to other platforms as technology improves&lt;br /&gt;
* Allow lower layers to be used easily without higher layers as to customized to use in smaller microcontrollers, projects that does not require extra complexity of higher layers, etc.&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
With the wireless medium being tightly controlled, most wireless ad-hoc network applications operates in the ISM band, which is free from licensing. This means that there is limited channel bandwidth, much less than that of a wired network. Additionally, being wireless, there are many factors that can degrade the quality of the signal, such as noise and interference from other sources.&lt;br /&gt;
&lt;br /&gt;
The Link Layer, sometimes referred to as a MAC layer, involves the functions and procedures to transfer data between two or more nodes in-range of the network. Its primary responsibility is to ensure that data is correct before the user application has access to them and discard incorrect data as it receives. &lt;br /&gt;
&lt;br /&gt;
Furthermore, for data transmission utilizing multi-hop, a link layer must also facilitates safe-guards against [https://en.wikipedia.org/wiki/Hidden_node_problem hidden-] and [https://en.wikipedia.org/wiki/Exposed_node_problem exposed-] terminal problems.&lt;br /&gt;
&lt;br /&gt;
Link Layer protocols commonly used in embedded systems belongs to the &amp;#039;&amp;#039;contention-based&amp;#039;&amp;#039; classification. This means that they are aware of the risks of collisions of transmitted data, while &amp;#039;&amp;#039;contention-free&amp;#039;&amp;#039; protocols commonly used in mobile phone networks, are more applicable to static networks with centralized control.&lt;br /&gt;
&lt;br /&gt;
Utilizing a single channel with limited hardware processing power and aimed to be low power, two implementations of the link layer exists in the project: pure ALOHA and FAMA-NCS.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Pure ALOHA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Pure ALOHA protocol is classified as a contention-based protocol categorized in the &amp;#039;&amp;#039;random-access&amp;#039;&amp;#039; scheme. In this protocol, a node may transmit as soon as it is ready. It is suitable for low-load systems with a large number of potential senders. &lt;br /&gt;
&lt;br /&gt;
As the CC430 chip used supporting Automatic Clear Channel Assessment on-chip [http://www.ti.com/product/cc430f5137 CC430F5137] (Listen-before-talk), the pure ALOHA implementation is basically the physical layer implementation with extra address checking and buffers, ensuring that it conforms with the Link Layer interface.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FAMA-NCS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
FAMA-NCS stands for &amp;#039;&amp;#039;Floor Acquisition Multiple Access&amp;#039;&amp;#039; with &amp;#039;&amp;#039;Non-persistent carrier sensing&amp;#039;&amp;#039; ([http://link.springer.com/article/10.1023%2FA%3A1019146831447 Specification]), where &amp;#039;&amp;#039;floor&amp;#039;&amp;#039; stands for &amp;#039;&amp;#039;channel&amp;#039;&amp;#039;. It is a MACA-based scheme that makes announcements before it sends data to inform other nodes to be silent. Unlike MACA protocols, FAMA protocols require collision avoidance to be performed at both the sender and receiver nodes. &lt;br /&gt;
&lt;br /&gt;
To acquire the floor (channel), the sending node sends out a &amp;#039;&amp;#039;Request-to-Send (RTS)&amp;#039;&amp;#039;. The receiver responds with a &amp;#039;&amp;#039;Clear-to-Send (CTS)&amp;#039;&amp;#039; back to the transmitter. Any nodes overhearing this CTS packet knows the station has acquired the floor. CTS packets are repeated long enough for the benefit of any hidden sender did not register another node&amp;#039;s RTS.&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Deliverable Test Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3730</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3730"/>
		<updated>2015-10-04T07:00:27Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Layers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
While implementing individual layers may lead to increased memory use due to duplicated buffers on various layers, it was chosen to specifically not to use cross-layer implementation as we wanted to:&lt;br /&gt;
&lt;br /&gt;
* Use abstraction to simplify the development process&lt;br /&gt;
* Allow higher layers to be ported to other platforms as technology improves&lt;br /&gt;
* Allow lower layers to be used easily without higher layers as to customized to use in smaller microcontrollers, projects that does not require extra complexity of higher layers, etc.&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Deliverable Test Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3729</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3729"/>
		<updated>2015-10-04T06:53:50Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Layers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
When it comes to code organization, we employs the [https://en.wikipedia.org/wiki/OSI_model OSI model]. In this project, the lower three layers are implemented: physical layer, link layer and network layer. &lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Deliverable Test Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3726</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3726"/>
		<updated>2015-09-29T23:01:02Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Background */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ad-hoc Topology&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Addressing schemes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The focus of this project is to provide a robust and reliable unicast and broadcast routing ([https://en.wikipedia.org/wiki/Unicast#Addressing_methodologies Addressing methodologies]). If time permits or for future project groups, multicast can be added.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Deliverable Test Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3725</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3725"/>
		<updated>2015-09-29T22:54:59Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Physical Layer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
These settings are configurable using predefined symbols.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Deliverable Test Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3724</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3724"/>
		<updated>2015-09-29T22:54:01Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Hardware Abstraction Layer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined symbols, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Deliverable Test Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3723</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3723"/>
		<updated>2015-09-29T22:53:43Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Hardware Abstraction Layer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200 (configurable with predefined headers, ranging from 115200 to 921600)&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Deliverable Test Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3722</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3722"/>
		<updated>2015-09-29T22:52:27Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Physical Layer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
The Physical Layer deals with the physical connectivity between nodes. It set up the CC430 RF module&amp;#039;s configuration registers, PA table, node address, as well as include some abstraction functions used in transmitting and enabling/disabling various settings of the RF module.&lt;br /&gt;
&lt;br /&gt;
Various RF configurations are included with Olimex&amp;#039;s examples that could be used readily with the physical layer implemented, allowing the physical layer&amp;#039;s transfer rate to vary between 38.4k baud and 250k baud, as well as being able to transmit with output power settings from -30dBm to +8dBm.&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Deliverable Test Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3721</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3721"/>
		<updated>2015-09-29T22:06:56Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Application Development Guide */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Deliverable Test Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Typical Program Flow ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3720</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3720"/>
		<updated>2015-09-29T22:05:24Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Detailed Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Deliverable Test Results ==&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Main Program Design Guide ===&lt;br /&gt;
&lt;br /&gt;
=== Code Convention ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3719</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3719"/>
		<updated>2015-09-29T22:04:35Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* High Level Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Detailed Design ==&lt;br /&gt;
&lt;br /&gt;
- Describe the inner working of each layer, include flowcharts and global/important variables &lt;br /&gt;
&lt;br /&gt;
=== Physical Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Link Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Network Layer ===&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Main Program Design Guide ===&lt;br /&gt;
&lt;br /&gt;
=== Code Convention ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3718</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3718"/>
		<updated>2015-09-29T22:04:20Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* High Level Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Detailed Design ==&lt;br /&gt;
&lt;br /&gt;
- Describe the inner working of each layer, include flowcharts and global/important variables &lt;br /&gt;
&lt;br /&gt;
=== Physical Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Link Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Network Layer ===&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Main Program Design Guide ===&lt;br /&gt;
&lt;br /&gt;
=== Code Convention ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3717</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3717"/>
		<updated>2015-09-29T22:03:59Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Hardware Abstraction Layer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Design ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
The hardware abstraction layer (HAL) implements functions that set up the MSP430 core hardware such as clocks, GPIO, UART, etc. This layer allows higher layers in the stack to have access to the hardware through a simple and portable abstraction API regardless of the underlying hardware. By default, the HAL initializes the MSP430 modules to the following settings:&lt;br /&gt;
&lt;br /&gt;
* GPIO - All pins defaults to outputs with an output value of 0, with the exception of:&lt;br /&gt;
** P1.0: red LED on-board&lt;br /&gt;
** P1.1: input button with internal pull-up resistor (active low)&lt;br /&gt;
** P1.5, P1.6: UART Tx and Rx&lt;br /&gt;
** P5.0, P5.1: low-frequency watch crystal ACLK source&lt;br /&gt;
&lt;br /&gt;
* Clocks&lt;br /&gt;
** MCLK: 25 MHz&lt;br /&gt;
** SMCLK: 25 MHz&lt;br /&gt;
** ACLK: 32768 Hz (external watch crystal frequency)&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** Baud: 115200&lt;br /&gt;
** Data: 8 bits&lt;br /&gt;
** Parity: none&lt;br /&gt;
** Stop: 1 bit&lt;br /&gt;
** Flow control: none&lt;br /&gt;
** Hardware Rx interrupt disabled by default&lt;br /&gt;
&lt;br /&gt;
* Timers&lt;br /&gt;
** Timer0_A0 is reserved for Link Layer operation&lt;br /&gt;
&lt;br /&gt;
The HAL layer also includes &amp;#039;&amp;#039;fputs()&amp;#039;&amp;#039; and &amp;#039;&amp;#039;fputc()&amp;#039;&amp;#039; functions that overrides default &amp;#039;&amp;#039;stdio.h&amp;#039;&amp;#039; functions, allowing developers to use &amp;#039;&amp;#039;printf()&amp;#039;&amp;#039; seamlessly through UART in their applications.&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Detailed Design ==&lt;br /&gt;
&lt;br /&gt;
- Describe the inner working of each layer, include flowcharts and global/important variables &lt;br /&gt;
&lt;br /&gt;
=== Physical Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Link Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Network Layer ===&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Main Program Design Guide ===&lt;br /&gt;
&lt;br /&gt;
=== Code Convention ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3716</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3716"/>
		<updated>2015-09-29T21:45:42Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Objectives and Deliverables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and if time permits, multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Design ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Detailed Design ==&lt;br /&gt;
&lt;br /&gt;
- Describe the inner working of each layer, include flowcharts and global/important variables &lt;br /&gt;
&lt;br /&gt;
=== Physical Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Link Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Network Layer ===&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Main Program Design Guide ===&lt;br /&gt;
&lt;br /&gt;
=== Code Convention ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3453</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3453"/>
		<updated>2015-08-23T11:14:37Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Layers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Design ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
====Hardware Abstraction Layer====&lt;br /&gt;
&lt;br /&gt;
====Physical Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Link Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
====Network Layer====&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Detailed Design ==&lt;br /&gt;
&lt;br /&gt;
- Describe the inner working of each layer, include flowcharts and global/important variables &lt;br /&gt;
&lt;br /&gt;
=== Physical Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Link Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Network Layer ===&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Main Program Design Guide ===&lt;br /&gt;
&lt;br /&gt;
=== Code Convention ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3381</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3381"/>
		<updated>2015-08-21T13:53:53Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* High Level Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Design ==&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can be classified into various classifications based on the communication type, topology and node configurations. Depending on the communication type, a network can be classified as single-hop or multi-hop ad-hoc network. In a single-hop network, all nodes are in range of each other and can communicate directly. In a multi-hop network, not all nodes are in reach of each others and need to communicate via a node in between - thus hops. &lt;br /&gt;
&lt;br /&gt;
An ad-hoc network can also be classified by topology. The two major classifications are flat and hierarchical. In a flat ad-hoc nework, all nodes carry the same responsibilities. This means there are no admin nodes and that each nodes performs the same functionality. On the contrary, hierarchical ad-hoc networks consist of clusters of nodes representing individual networks but are all linked together.  In a hierarchical network, master nodes exists and area responsible for passing data between clusters.&lt;br /&gt;
&lt;br /&gt;
Lastly, an ad-hoc network can be classified based on its node configuration: homogeneous or heterogeneous. In homogeneous newtorks, all nodes have the same hardware and characteristics (processor, memory, peripheral devices, etc.). Wireless sensor network is a typical example of a homogeneous network. In a heterogeneous network, nodes differ in hardware configurations and thus cannot provide the same services.&lt;br /&gt;
&lt;br /&gt;
This project is focused on implementing a flat, multi-hop and homogeneous network.&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hardware Abstraction Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Physical Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Network Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Detailed Design ==&lt;br /&gt;
&lt;br /&gt;
- Describe the inner working of each layer, include flowcharts and global/important variables &lt;br /&gt;
&lt;br /&gt;
=== Physical Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Link Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Network Layer ===&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Main Program Design Guide ===&lt;br /&gt;
&lt;br /&gt;
=== Code Convention ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3380</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3380"/>
		<updated>2015-08-21T13:43:49Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
==== Project Team ====&lt;br /&gt;
&lt;br /&gt;
Cong Nguyen&lt;br /&gt;
&lt;br /&gt;
Duncan Lawry&lt;br /&gt;
&lt;br /&gt;
==== Supervisors ====&lt;br /&gt;
&lt;br /&gt;
Michael Liebelt&lt;br /&gt;
&lt;br /&gt;
Braden Phillips&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Ad-hoc wireless networks are self-configurable networks with high node mobility, allowing them to function without reliance on any fixed infrastructure. This makes wireless ad-hoc networks useful for quick communication channel deployment suitable for all applications.&lt;br /&gt;
&lt;br /&gt;
While there are already many existing commercial solutions with ad-hoc capability such as [http://www.zigbee.org/ ZigBee], [https://developer.bluetooth.org/TechnologyOverview/Pages/PAN.aspx Bluetooth Personal Area Network (PAN)] and Wi-Fi based ad-hoc configurations ([http://windows.microsoft.com/en-au/windows/set-computer-to-computer-adhoc-network Windows], [https://support.apple.com/kb/PH13796?locale=en_US MacOS], [https://wiki.debian.org/WiFi/AdHoc Linux (Debian)]) these solutions are generally costly in terms of processing power, memory requirement due to reliance on existing protocol stack or costly in terms of royalty. Furthermore, they are commonly reliant on the ISM 2.4GHz band, making them unsuitable for high-range applications without having to invest on a larger antenna which can increase power requirement and a product&amp;#039;s physical size. &lt;br /&gt;
&lt;br /&gt;
This project aims to develop an ad-hoc network stack with low processing power and low memory requirement by developing customized protocol layers operating in ISM sub-1GHz frequency for long communication distance and free usage, while provide high reliability and robustness. &lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
This project involves the development of the hardware abstraction layer (HAL), physical layer, link layer and network layer of a wireless ad-hoc network. In usage, data can be provided to the protocols via systems attaching to the protocol stacks or through an application on the microcontroller running the network stack itself.&lt;br /&gt;
&lt;br /&gt;
At the end of this project, the developed ad-network will be flexible in configuration, providing reliable and modest data transfer rate over 100 metres. This means:&lt;br /&gt;
&lt;br /&gt;
1. The network will be self-configuring, independent of external networking infrastructure&lt;br /&gt;
&lt;br /&gt;
2. The network must scale efficiently from 2 to 50 or more nodes&lt;br /&gt;
&lt;br /&gt;
3. The network must work well in both dense and sparse clusters&lt;br /&gt;
&lt;br /&gt;
4. Packet delay should be as low as possible&lt;br /&gt;
&lt;br /&gt;
5. There must be error-checking on multiple levels at the node&lt;br /&gt;
&lt;br /&gt;
6. Node antennas must have a range of over 100 metres.&lt;br /&gt;
&lt;br /&gt;
7. The network must support unicast and multicast operation.&lt;br /&gt;
&lt;br /&gt;
8. Each node should consume as little power as possible&lt;br /&gt;
&lt;br /&gt;
== High Level Design ==&lt;br /&gt;
&lt;br /&gt;
(basically the proposal document and v0.1 SDD)&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hardware Abstraction Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Physical Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Network Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Detailed Design ==&lt;br /&gt;
&lt;br /&gt;
- Describe the inner working of each layer, include flowcharts and global/important variables &lt;br /&gt;
&lt;br /&gt;
=== Physical Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Link Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Network Layer ===&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Main Program Design Guide ===&lt;br /&gt;
&lt;br /&gt;
=== Code Convention ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3379</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3379"/>
		<updated>2015-08-21T13:15:43Z</updated>

		<summary type="html">&lt;p&gt;A1627539: /* High Level Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
- Project name&lt;br /&gt;
&lt;br /&gt;
- Supervisors&lt;br /&gt;
&lt;br /&gt;
- Group members&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Comparison with other technologies&lt;br /&gt;
&lt;br /&gt;
- Why we&amp;#039;re rolling out our own&lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
- Objective&lt;br /&gt;
&lt;br /&gt;
- Deliverable&lt;br /&gt;
&lt;br /&gt;
== High Level Design ==&lt;br /&gt;
&lt;br /&gt;
(basically the proposal document and v0.1 SDD)&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hardware Abstraction Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Physical Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Network Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Detailed Design ==&lt;br /&gt;
&lt;br /&gt;
- Describe the inner working of each layer, include flowcharts and global/important variables &lt;br /&gt;
&lt;br /&gt;
=== Physical Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Link Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Network Layer ===&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Main Program Design Guide ===&lt;br /&gt;
&lt;br /&gt;
=== Code Convention ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3195</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3195"/>
		<updated>2015-08-12T13:23:51Z</updated>

		<summary type="html">&lt;p&gt;A1627539: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
- Project name&lt;br /&gt;
&lt;br /&gt;
- Supervisors&lt;br /&gt;
&lt;br /&gt;
- Group members&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Comparison with other technologies&lt;br /&gt;
&lt;br /&gt;
- Why we&amp;#039;re rolling out our own&lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
- Objective&lt;br /&gt;
&lt;br /&gt;
- Deliverable&lt;br /&gt;
&lt;br /&gt;
== High Level Design ==&lt;br /&gt;
&lt;br /&gt;
(basically the proposal document and v0.1 SDD)&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Physical Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Network Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Detailed Design ==&lt;br /&gt;
&lt;br /&gt;
- Describe the inner working of each layer, include flowcharts and global/important variables &lt;br /&gt;
&lt;br /&gt;
=== Physical Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Link Layer ===&lt;br /&gt;
&lt;br /&gt;
=== Network Layer ===&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
==== Code Composer Studio ====&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
==== SmartRF Studio ====&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
=== Related documentation ===&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Main Program Design Guide ===&lt;br /&gt;
&lt;br /&gt;
=== Code Convention ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3194</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3194"/>
		<updated>2015-08-12T13:16:55Z</updated>

		<summary type="html">&lt;p&gt;A1627539: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
- Project name&lt;br /&gt;
&lt;br /&gt;
- Supervisors&lt;br /&gt;
&lt;br /&gt;
- Group members&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Comparison with other technologies&lt;br /&gt;
&lt;br /&gt;
- Why we&amp;#039;re rolling out our own&lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
- Objective&lt;br /&gt;
&lt;br /&gt;
- Deliverable&lt;br /&gt;
&lt;br /&gt;
== High Level Design ==&lt;br /&gt;
&lt;br /&gt;
(basically the proposal document and v0.1 SDD)&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Physical Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Network Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Detailed Design ==&lt;br /&gt;
&lt;br /&gt;
- Describe the inner working of each layer, include flowcharts and global/important variables &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Physical Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Network Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code Composer Studio&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SmartRF Studio&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Related documentation&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Main Program Design Guide ===&lt;br /&gt;
&lt;br /&gt;
=== Code Convention ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3193</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3193"/>
		<updated>2015-08-12T13:16:04Z</updated>

		<summary type="html">&lt;p&gt;A1627539: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
- Project name&lt;br /&gt;
&lt;br /&gt;
- Supervisors&lt;br /&gt;
&lt;br /&gt;
- Group members&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Comparison with other technologies&lt;br /&gt;
&lt;br /&gt;
- Why we&amp;#039;re rolling out our own&lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
- Objective&lt;br /&gt;
&lt;br /&gt;
- Deliverable&lt;br /&gt;
&lt;br /&gt;
== High Level Design ==&lt;br /&gt;
&lt;br /&gt;
(basically the proposal document and v0.1 SDD)&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Physical Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Network Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Detailed Description ==&lt;br /&gt;
&lt;br /&gt;
- Describe the inner working of each layer, include flowcharts and global/important variables &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Physical Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Network Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code Composer Studio&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SmartRF Studio&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Related documentation&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Main Program Design Guide ===&lt;br /&gt;
&lt;br /&gt;
=== Code Convention ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3168</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3168"/>
		<updated>2015-08-03T06:01:26Z</updated>

		<summary type="html">&lt;p&gt;A1627539: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
- Project name&lt;br /&gt;
&lt;br /&gt;
- Supervisors&lt;br /&gt;
&lt;br /&gt;
- Group members&lt;br /&gt;
&lt;br /&gt;
=== Significance ===&lt;br /&gt;
&lt;br /&gt;
Comparison with other technologies&lt;br /&gt;
&lt;br /&gt;
- Why we&amp;#039;re rolling out our own&lt;br /&gt;
&lt;br /&gt;
=== Objectives and Deliverables ===&lt;br /&gt;
&lt;br /&gt;
- Objective&lt;br /&gt;
&lt;br /&gt;
- Deliverable&lt;br /&gt;
&lt;br /&gt;
== High Level Design ==&lt;br /&gt;
&lt;br /&gt;
(basically the proposal document and v0.1 SDD)&lt;br /&gt;
&lt;br /&gt;
=== Layers ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Physical Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Network Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Description&lt;br /&gt;
&lt;br /&gt;
- Significance&lt;br /&gt;
&lt;br /&gt;
=== Packet Format ===&lt;br /&gt;
&lt;br /&gt;
- Photo/Table of the packet&lt;br /&gt;
&lt;br /&gt;
- Size and limitation of the packet&lt;br /&gt;
&lt;br /&gt;
- Description of each byte in the packet&lt;br /&gt;
&lt;br /&gt;
== Detailed Description ==&lt;br /&gt;
&lt;br /&gt;
- Describe the inner working of each layer, include flowcharts and global/important variables &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Physical Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Network Layer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code Composer Studio&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- TI Compiler version&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SmartRF Studio&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
- Used in RX/TX dBM measurement and RF configuration register generation&lt;br /&gt;
&lt;br /&gt;
- Provide a quick description of how to use this tool for readers&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Related documentation&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Application Development Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Main Program Design Guide ===&lt;br /&gt;
&lt;br /&gt;
=== Code Convention ===&lt;br /&gt;
&lt;br /&gt;
=== Code Explanation ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code walk-through for various layers&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Predefined Definitions ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; What they are for, why they exist, when to use them&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
=== Migration Advice ===&lt;br /&gt;
&lt;br /&gt;
- How to port code from this project to other MCU architectures&lt;br /&gt;
&lt;br /&gt;
== Reflection and Improvement ==&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
	<entry>
		<id>https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3164</id>
		<title>Projects:2015s1-40 Flexible ad-hoc Network A: Physical Layer</title>
		<link rel="alternate" type="text/html" href="https://projectswiki.eleceng.adelaide.edu.au/projects/index.php?title=Projects:2015s1-40_Flexible_ad-hoc_Network_A:_Physical_Layer&amp;diff=3164"/>
		<updated>2015-08-03T05:16:45Z</updated>

		<summary type="html">&lt;p&gt;A1627539: Created page with &amp;quot;&amp;quot;Look at my wiki, it&amp;#039;s the best&amp;quot; - Jack McLean, 2015&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;quot;Look at my wiki, it&amp;#039;s the best&amp;quot; - Jack McLean, 2015&lt;/div&gt;</summary>
		<author><name>A1627539</name></author>
		
	</entry>
</feed>