# Toolkit Folders

The Atheros Open Powerline Toolkit package folder has many subfolders. Some contain source code, some contain documentation and others contain shell scripts. Some source folders contain programs that require components in neighboring folders. Consequently, you will see references to relative pathnames like ../folder, throughout source code, makefiles and shell scripts. This notation simplifies development and maintenance and is helpful when locating specific files.

Folder descriptions appear below in alphabetical order:

./applets

  A library of programs that can run, stand-alone, on Atheros powerline devices and perform diagnostic tests for connection, functionality and performance. Some run to completion and return to the Bootloader. Others run continuously until the device is reset. Most can be run and executed in sequence using program int6ktest.

./classes

  A collection of C++ classes that implement many of the ANSI C functions found elsewhere in the toolkit. These classes will compile and run on most platforms but are still a work-in-progress. The programs folder contains actual and sample programs that use these classes.

./docbook

  HTML pages generated by several methods, but mostly Docbook 4.5. Some pages have been created using special tools that are not provided and will not be made available. The `Makefile` in this folder will compile the core XML source files on GNU/Linux systems that have Docbook 4.5 installed with extentions by Normal Walsh but it does not install the pages. See Installation on Linux for more information.

./ether

  Network specific source code that supports raw ethernet packets in a platform independent fashion using plugin modules. The principle feature is the `channel` data structure used to read and write raw ethernet packets using network features on GNU/Linux, with or without libpcap, and on Windows with winpcap. The source code in this folder is difficult to port cross-platform due to the way different operating systems implement their system header files and network stacks.

./plc

  The main source code for programs that communicate with Qualcomm Atheros powerline devices over Ethernet. The programs in this folder are essential programs for engineers and embedded software developers wanting to explore powerline device behavior. The Makefile in this folder will compile and install programs in `/usr/local/bin` on GNU/Linux systems.

./mme

  A collection of helper functions dealing with HomePlug and Atheros management messages. They are not needed for proper toolkit operation but they can be useful during development and debugging because they print message content in readable format. Most of these functions require extra memory because they include symbol tables and extra data conversion functions.

./nodes

  A collection of functions that comrpise a generic, light-weight XML parser. Atheros is currently exprimenting with various XML-based applications to support device management on embedded systems. These functions are the core. Currently, they are only used by the pxe and int6k2 programs. See XML Editing Functions for more information.

./nvm

  Programs, functions and make files related to Atheros NonVolatile Memory (NVM) files. All programs in this folder either read from or write to NVM files. None communicate with powerline devices. Some of the popular programs are chknvm, nvmsplit and nvmmerge.

./patches

  A collection of useful Linux kernel patches and install scripts. Of particular interest is the send-to-self patch that enables external routing of ISO Layer 3 traffic between two Ethernet interfaces on the same host. Atheros provides them but does not support them.

./pib

  Programs, functions and make files related to Atheros Parameter Information Block (PIB) files. All programs in this folder either read from or write to PIB files. None communicate with powerline devices. Some of the popular programs are chkpib, modpib, getpib and setpib.

./programs

  A small collection of sample C++ programs that use the Atheros C++ powerline classes. These programs compile and run on most environments but are still a work-in-progress. Users may actually find netifs and plcnets useful.

./serial

  Programs, functions and make files related to the Atheros Serial Communication Interface for Powerline devices. All of the programs in this folder communicate using a host serial port. None communicate with powerline devices over Ethernet. The main program of interest is int6kuart.

./scripts

  Miscellaneous shell scripts that call various programs in this package to perform tasks such as flashing a FW2.0 device. Care must be taken here to ensure that environment variables at the start of each script are appropriate for your system.

./ram

  Support modules for reading, printing and checking NVRAM and SDRAM configuration files. The `.cfg` files in this folder have a different format than the `.config` files released with the Atheros Windows Device Manager. The files distributed with the Windows Device Manger are 64 ASCII character with no checksum. The files in this directory are 32 binary bites with trailing checksum. Users may create new sdram configuration files by compiling sdram.c, using `gcc -o sdram sdram.c` and running it without any command line arguments.

./tools

  Source code and header files used by virtually all programs in the toolkit. These files are generic and have application beyond this package. They provide GNU/Linux-style or POSIX-style functionality to programs running in environments that do not have either. They also implement operations like checksum computation and multi-byte hexadecimal encoding and decoding. See Support Function Reference for more information.

./VisualStudioNET

  Components unique to Microsoft Windows are kept in and under this folder. Specifically, it contains a Visual Studio .NET solution to compile most of the programs in this package using only Microsoft and winpcap libraries. Compiled .exe files can be run on Windows enabled systems having winpcap installed. Adjustments may be necessary depending on your environment.

  Microsoft does not provide full POSIX support on Windows platforms. Consequently, alternative headers and libraries are included under this folder. For example, an abridged version of unistd.h and an alternative version of stdint.h are included under `VisualStudioNET/include`. Other significant header files included here are ethernet.h, if_ether.h and in.h. Subfolder `VisualStudio\Library` contains WinPcap libraries. These folders are referenced in appropriate compiler and linker options for Microsoft Development environments.