#!/usr/bin/env python
import re
from param import *
from emit import Emit
import cgi
# Emit docs in a form acceptable to the APM wordpress docs site
class HtmlEmit ( Emit ) :
def __init__ ( self ) :
html_fname = ' Parameters.html '
self . f = open ( html_fname , mode = ' w ' )
self . preamble = ''' <!-- Dynamically generated list of documented parameters
This page was generated using Tools / autotest / param_metadata / param_parse . py
DO NOT EDIT
- - >
< p style = " text-align: right " > < a title = " Table of Contents " href = " /wiki/table-of-contents/ " > < span style = " font-size: medium " > < strong > Reference Manual Table of Contents < / strong > < / span > < / a > < / p >
< h3 style = " text-align: center " > Complete Parameter List < / h3 >
< hr / >
< p > This is a complete list of the parameters which can be set via the MAVLink protocol in the EEPROM of your APM to control vehicle behaviour . This list is automatically generated from the latest ardupilot source code , and so may contain parameters which are not yet in the stable released versions of the code . < / p >
< ! - - add auto - generated table of contents with " Table of Contents Plus " plugin - - >
[ toc exclude = " Complete Parameter List " ]
'''
self . t = ' '
def escape ( self , s ) :
s = s . replace ( ' ' , ' - ' )
s = s . replace ( ' : ' , ' - ' )
s = s . replace ( ' ( ' , ' ' )
s = s . replace ( ' ) ' , ' ' )
return s
def close ( self ) :
self . f . write ( self . preamble )
self . f . write ( self . t )
self . f . close ( )
def start_libraries ( self ) :
self . t + = ' \n \n <h1>Library Parameters</h1> \n \n '
def emit ( self , g , f ) :
tag = ' %s Parameters ' % g . name
t = ' \n \n <h1> %s </h1> \n ' % tag
for param in g . params :
if not hasattr ( param , ' DisplayName ' ) or not hasattr ( param , ' Description ' ) :
continue
d = param . __dict__
tag = ' %s ( %s ) ' % ( param . DisplayName , param . name )
t + = ' \n \n <h2> %s </h2> ' % tag
if d . get ( ' User ' , None ) == ' Advanced ' :
t + = ' <em>Note: This parameter is for advanced users</em><br> '
t + = " \n \n <p> %s </p> \n " % cgi . escape ( param . Description )
t + = " <ul> \n "
for field in param . __dict__ . keys ( ) :
if field not in [ ' name ' , ' DisplayName ' , ' Description ' , ' User ' ] and field in known_param_fields :
if field == ' Values ' and Emit . prog_values_field . match ( param . __dict__ [ field ] ) :
values = ( param . __dict__ [ field ] ) . split ( ' , ' )
t + = " <table><th>Value</th><th>Meaning</th> \n "
for value in values :
v = value . split ( ' : ' )
t + = " <tr><td> %s </td><td> %s </td></tr> \n " % ( v [ 0 ] , v [ 1 ] )
t + = " </table> \n "
else :
t + = " <li> %s : %s </li> \n " % ( field , cgi . escape ( param . __dict__ [ field ] ) )
t + = " </ul> \n "
self . t + = t