Giter VIP home page Giter VIP logo

rapidonsetadhocnetwork's Introduction

RapidOnsetAdHocNetwork

This is an implementation of an ad hoc network that can be rapidly deployed in the case of a natural disaster to restore system communications. The source code is built on top of PICOS which is a propietary operating system.

The purpose of the project was to test network resilience when using packet loss as a sign of a lost connection VS. signal strength.

rapidonsetadhocnetwork's People

Contributors

shibbywan avatar reboss avatar elliottsobek avatar aidanbush avatar

Watchers

James Cloos avatar  avatar Christopher Dubeau avatar  avatar  avatar  avatar

Forkers

shibbywan

rapidonsetadhocnetwork's Issues

fsm send_deploy

  • remove SEND_DEPLOY_INIT because as of now it does nothing
  • add tcv_wnp() function before build_packet()
  • ensure tcv_endp() isn't called on an already ended packet when if (cont) evaluates to true (I'm kind of unsure what is happening here)

Determine signal strength

  • Determine how to calculate a signal strength from a parent node
  • Implement signal strength calculation
  • Determine signal strength threshold

Create skeleton .cc files

  • app.cc -> main
  • network.cc -> recieve & evaluate
  • protocol_1.cc
  • protocol_2.cc
  • node_tools.cc -> setup node, UART

Conform to strict formatting style

Tabs must be spaces, 4 spaces in total.
Single line conditionals or loops must have removed braces.
Case statements must be at the same indentation level as Switch.
Use PICOS bool type rather than stdbool or define TRUE FALSE.
Single blank line at fsm start.
Macros must be put into appropriate .h files.
No extra blank lines.
No beginning or tailing white spaces.
Else conditionals must be on same line as ending brace as previous conditional statement.

A new node should listen by default and must be manually told that it is the sink

fsm root {

        char selection = ' ';

        initial state INIT:
                init_cc1100();
                runfsm receive;
                if (sfd >= 0) {
                  sink = 1;
                  proceed DISPLAY;
                }
......

I noticed that the sink is always set to 1 in the case above which would in turn cause the node to not listen for deployment packets by default. I could be missing something here, but I think that by default, a node that is powered on should immediately listen for deployment packets from its neighbors. Once it is deployed it should then drop all deployment packets because otherwise once the next node is in its broadcast phase, it may receive those packets and could lead to the node "redeploying" itself.

Create a UI

  • Make a simple static menu
  • Enable interactivity

Determine how many processes are running for debugging.

The PicOS Quick Reference has two functions of interest that could be useful:

sint ptleft() determines how many processes can still be created.

sint crunning(fsmcode fsm) determines the number of running instances of the specified fsm. crunning(NULL) is the same as ptleft().

Work on node_tools.cc

  • Function to get and set the node IDs
  • Function to detect connection loss
    • send the info to the sink
  • Function to setup (look at packet, set appropriate parameters)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.