Software Documentation

Code Documentation

The dragonfly library is now documented within the repository using Doxygen and properly formatted source files. Doxygen-generated documentation can be found in the repository under /trunk/doc/ .

Robot Code Structure

Explain the code structure here (i.e. drivers in library, fsm behaviors, continuous-loop execution, wireless)

AVR

TeraTerm (reading robot usb output on your computer)

  • Warning: you cannot program a robot while TeraTerm (or similar programs) are actively using the usb port
    • disable or close the terminal output before trying to reprogram a robot, then reopen it after programming is complete

GoSerial (doing the same thing as above, but with a mac)

  • Getting a functional version of goSerial on your computer:
    • Type "goSerial" into Google and click on the first link
    • Click on the Download button you find on that page and get goSerial onto your mac
  • Using goSerial to read the values from your robot:
    • You should get a window that says "untitled" on the top and the picture of a light switch
    • Hit the light switch button if it hasn't already been, and then change the following:
      • Change the serial port to the only option that isn't BlueTooth (note your robot has to plugged in ... just making sure)
      • Change the Speed setting to 115200 bps
    • When you want to start getting the values to appear hit the weird button (plug?) to the left of the light switch button
      • Notes: for some reason when the plug has an X over it its on, and goSerial can't be on at the same time that you are trying to put programs on your robot.

ColoNet Structure

Explain the Colonet architecture here.

libDragonfly

Wireless Library

Remaking the wireless library is required if you change the wireless library. To do this, go to libwireless/lib and type "make" and then "make dist". Then your normal make process should incorporate the new wireless binaries. Be sure to commit the remade lib directory if you made changes you want saved.

Unit testing

Each library module should have a test function which tests all of the published APIs for correctness. For a module called module you should create a file in projects/test called test_module.c . This file should contain a function called testmodule which meets the following criteria:

  • Tests each API function
  • Cannot call dragonfly_init. dragonfly_init(ALL_ON) will be called by the testing framework
  • Returns in a reasonable amount of time (i.e. does not run forever)
  • Contains a comment with the expected behaviour of the robot. If the robot performs this behaviour, the test should be deemed a success by the tester.

Once the file is added, a line needs to be added to main.c which contains RUN_TEST( testmodule ); These lines can be commented in and out to control which tests are run. When run, main.c will execute each test in order and repeat the tests infinitely. The tester should allow each test to run at least twice in case a later test breaks the functionality of an earlier one.

Build system

Demo system