Merge pull request #1344 from tsparber/fix-doxygen

doxygen: Fixed all warnings
This commit is contained in:
Simon Duquennoy 2015-11-30 22:07:15 +01:00
commit ebc8d9fb1c
39 changed files with 278 additions and 222 deletions

2
.gitignore vendored
View file

@ -32,6 +32,8 @@
*.report
summary
*.summary
*.runerr
*.runlog
*.faillog
*.orig
*~

View file

@ -246,6 +246,7 @@ program_handler_load(char *name, char *arg)
#else /* WITH_LOADER_ARCH */
#define RUN(prg, process, arg) process_start(process, arg)
#endif /* WITH_LOADER_ARCH */
#if CTK_CONF_SCREENSAVER
/*-----------------------------------------------------------------------------------*/
/**
* Configures the name of the screensaver to be loaded when
@ -255,7 +256,6 @@ program_handler_load(char *name, char *arg)
* should be used.
*/
/*-----------------------------------------------------------------------------------*/
#if CTK_CONF_SCREENSAVER
void
program_handler_setscreensaver(char *name)
{

View file

@ -136,15 +136,18 @@ typedef struct uip_eth_addr {
typedef uip_802154_longaddr uip_lladdr_t;
#define UIP_802154_SHORTADDR_LEN 2
#define UIP_802154_LONGADDR_LEN 8
/** \brief Link layer address length */
#define UIP_LLADDR_LEN UIP_802154_LONGADDR_LEN
#else /*UIP_CONF_LL_802154*/
#if UIP_CONF_LL_80211
/** \brief 802.11 address */
typedef uip_80211_addr uip_lladdr_t;
/** \brief Link layer address length */
#define UIP_LLADDR_LEN 6
#else /*UIP_CONF_LL_80211*/
/** \brief Ethernet address */
typedef uip_eth_addr uip_lladdr_t;
/** \brief Link layer address length */
#define UIP_LLADDR_LEN 6
#endif /*UIP_CONF_LL_80211*/
#endif /*UIP_CONF_LL_802154*/
@ -1368,8 +1371,7 @@ struct uip_conn {
uint8_t nrtx; /**< The number of retransmissions for the last
segment sent. */
/** The application state. */
uip_tcp_appstate_t appstate;
uip_tcp_appstate_t appstate; /** The application state. */
};

View file

@ -1046,12 +1046,14 @@ uncompress_hdr_hc06(uint16_t ip_len)
* - Both src and dest interface ID are recoverable from lower layer
* header
* - Next header is either ICMP, UDP or TCP
*
* Moreover, if next header is UDP, we try to compress it using HC_UDP.
* This is feasible is both ports are between F0B0 and F0B0 + 15\n\n
* This is feasible is both ports are between F0B0 and F0B0 + 15.
*
*
* Resulting header structure:
* - For ICMP, TCP, non compressed UDP\n
* HC1 encoding = 11111010 (UDP) 11111110 (TCP) 11111100 (ICMP)\n
* - For ICMP, TCP, non compressed UDP\n
* HC1 encoding = 11111010 (UDP) 11111110 (TCP) 11111100 (ICMP)\n
* \verbatim
* 1 2 3
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
@ -1062,8 +1064,8 @@ uncompress_hdr_hc06(uint16_t ip_len)
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* \endverbatim
*
* - For compressed UDP
* HC1 encoding = 11111011, HC_UDP encoding = 11100000\n
* - For compressed UDP\n
* HC1 encoding = 11111011, HC_UDP encoding = 11100000\n
* \verbatim
* 1 2 3
* 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
@ -1577,7 +1579,6 @@ output(const uip_lladdr_t *localdest)
/*--------------------------------------------------------------------*/
/** \brief Process a received 6lowpan packet.
* \param r The MAC layer
*
* The 6lowpan packet is put in packetbuf by the MAC. If its a frag1 or
* a non-fragmented packet we first uncompress the IP header. The

View file

@ -231,10 +231,10 @@ uip_ds6_link_neighbor_callback(int status, int numtx)
}
/*---------------------------------------------------------------------------*/
/** Periodic processing on neighbors */
void
uip_ds6_neighbor_periodic(void)
{
/* Periodic processing on neighbors */
uip_ds6_nbr_t *nbr = nbr_table_head(ds6_neighbors);
while(nbr != NULL) {
switch(nbr->state) {

View file

@ -53,23 +53,23 @@
#define DEBUG DEBUG_NONE
#include "net/ip/uip-debug.h"
struct etimer uip_ds6_timer_periodic; /** \brief Timer for maintenance of data structures */
struct etimer uip_ds6_timer_periodic; /**< Timer for maintenance of data structures */
#if UIP_CONF_ROUTER
struct stimer uip_ds6_timer_ra; /** \brief RA timer, to schedule RA sending */
struct stimer uip_ds6_timer_ra; /**< RA timer, to schedule RA sending */
#if UIP_ND6_SEND_RA
static uint8_t racount; /** \brief number of RA already sent */
static uint16_t rand_time; /** \brief random time value for timers */
static uint8_t racount; /**< number of RA already sent */
static uint16_t rand_time; /**< random time value for timers */
#endif
#else /* UIP_CONF_ROUTER */
struct etimer uip_ds6_timer_rs; /** \brief RS timer, to schedule RS sending */
static uint8_t rscount; /** \brief number of rs already sent */
struct etimer uip_ds6_timer_rs; /**< RS timer, to schedule RS sending */
static uint8_t rscount; /**< number of rs already sent */
#endif /* UIP_CONF_ROUTER */
/** \name "DS6" Data structures */
/** @{ */
uip_ds6_netif_t uip_ds6_if; /** \brief The single interface */
uip_ds6_prefix_t uip_ds6_prefix_list[UIP_DS6_PREFIX_NB]; /** \brief Prefix list */
uip_ds6_netif_t uip_ds6_if; /**< The single interface */
uip_ds6_prefix_t uip_ds6_prefix_list[UIP_DS6_PREFIX_NB]; /**< Prefix list */
/* Used by Cooja to enable extraction of addresses from memory.*/
uint8_t uip_ds6_addr_size;

View file

@ -282,6 +282,7 @@ uint8_t uip_ds6_is_addr_onlink(uip_ipaddr_t *ipaddr);
/** \name Unicast address list basic routines */
/** @{ */
/** \brief Add a unicast address to the interface */
uip_ds6_addr_t *uip_ds6_addr_add(uip_ipaddr_t *ipaddr,
unsigned long vlifetime, uint8_t type);
void uip_ds6_addr_rm(uip_ds6_addr_t *addr);

View file

@ -811,7 +811,7 @@ uip_nd6_rs_output(void)
return;
}
/*---------------------------------------------------------------------------*/
/*
/**
* Process a Router Advertisement
*
* - Possible actions when receiving a RA: add router to router list,

View file

@ -59,9 +59,12 @@
/** \name RFC 4861 Host constant */
/** @{ */
/** \brief Maximum router solicitation delay */
#define UIP_ND6_MAX_RTR_SOLICITATION_DELAY 1
/** \brief Router solicitation interval */
#define UIP_ND6_RTR_SOLICITATION_INTERVAL 4
#define UIP_ND6_MAX_RTR_SOLICITATIONS 3
/** \brief Maximum router solicitations */
#define UIP_ND6_MAX_RTR_SOLICITATIONS 3
/** @} */
/** \name RFC 4861 Router constants */

View file

@ -654,7 +654,7 @@ static uint8_t uip_reassflags;
*/
struct etimer uip_reass_timer; /* timer for reassembly */
struct etimer uip_reass_timer; /**< Timer for reassembly */
uint8_t uip_reass_on; /* equal to 1 if we are currently reassembling a packet */
static uint32_t uip_id; /* For every packet that is to be fragmented, the source

View file

@ -33,7 +33,7 @@
*/
/****************************************************************************************************//**
* @file ADUCRF101.h
* @file ADuCRF101.h
*
* @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File for
* default ADUCRF101 Device Series

View file

@ -1292,7 +1292,6 @@ static RIE_Responses RadioWaitOnState(RadioState FinalState)
/**
@fn RIE_Responses RadioWaitOnCmdLdr(void)
@brief Wait for Final State to be reached
@param FinalState State to wait on
@return RIE_Responses Error code
**/
static RIE_Responses RadioWaitOnCmdLdr(void)

View file

@ -32,7 +32,7 @@
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
@file system_ADUCRF101.c
@file system_ADuCRF101.c
@brief CMSIS Cortex-M3 Device Peripheral Access Layer Implementation File
for the ADuCRF101
@version v1.0
@ -106,7 +106,6 @@ void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */
/**
* Initialize the system
*
* @param none
* @return none
*
* @brief Setup the microcontroller system.

View file

@ -32,7 +32,7 @@
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
@file system_ADUCRF101.h
@file system_ADuCRF101.h
@brief: CMSIS Cortex-M3 Device Peripheral Access Layer Header File
for the ADuCRF101
@version v0.2
@ -51,7 +51,6 @@
/**
* @brief Initialize the system
*
* @param none
* @return none
*
* Setup the microcontroller system.
@ -62,7 +61,6 @@ extern void SystemInit (void);
/**
* @brief Update internal SystemCoreClock variable
*
* @param none
* @return none
*
* Updates the internal SystemCoreClock with current core

View file

@ -71,7 +71,8 @@
/**
* \brief Perform a relocation.
* \param output The output object for the segment.
* \param input_fd The file descriptor for the ELF file.
* \param output The output object for the segment.
* \param sectionoffset The file offset at which the relocation can be found.
* \param sectionaddr The section start address (absolute runtime).
* \param rela A pointer to an ELF32 rela structure (struct elf32_rela).

View file

@ -169,11 +169,11 @@ struct elfloader_output {
};
/**
* \brief Allocate a new segment
* \param input The output object
* \param type Type of segment
* \param size Size of segment in bytes
* \return A pointer to the start of the segment.
* \brief Allocate a new segment
* \param output The output object
* \param type Type of segment
* \param size Size of segment in bytes
* \return A pointer to the start of the segment.
*
* The returned address doesn't need to correspond to any real memory,
* since it's only used for calculating the relocations.
@ -182,39 +182,39 @@ void *elfloader_allocate_segment(struct elfloader_output *output,
unsigned int type, int size);
/**
* \brief Start writing to a new segment
* \param input The output object
* \param type Type of segment
* \param addr Address of segment from elfloader_allocate_segment
* \param size Size of segment in bytes
* \return Returns ELFLOADER_OK if successful, otherwise an error code
* \brief Start writing to a new segment
* \param output The output object
* \param type Type of segment
* \param addr Address of segment from elfloader_allocate_segment
* \param size Size of segment in bytes
* \return Returns ELFLOADER_OK if successful, otherwise an error code
*
*/
int elfloader_start_segment(struct elfloader_output *output,
unsigned int type, void *addr, int size);
/**
* \brief Mark end of segment
* \param input The output object
* \return Zero if successful
* \brief Mark end of segment
* \param output The output object
* \return Zero if successful
*/
int elfloader_end_segment(struct elfloader_output *output);
/**
* \brief Write data to a segment
* \param input The output object
* \param buf Data to be written
* \param len Length of data
* \return The number of bytes actually written, or negative if failed.
* \brief Write data to a segment
* \param output The output object
* \param buf Data to be written
* \param len Length of data
* \return The number of bytes actually written, or negative if failed.
*/
int elfloader_write_segment(struct elfloader_output *output, const char *buf,
unsigned int len);
/**
* \brief Get the current offset in the file where the next data will
* be written.
* \param input The output object
* \return The current offset.
* \brief Get the current offset in the file where the next data will
* be written.
* \param output The output object
* \return The current offset.
*/
unsigned int elfloader_segment_offset(struct elfloader_output *output);
@ -255,8 +255,8 @@ void elfloader_init(void);
/**
* \brief Load and relocate an ELF file.
* \param input Input object defining how to read from the ELF file
* \param output Output object defining how to create and write to seegments.
* \param input_fd Input object defining how to read from the ELF file
* \param output Output object defining how to create and write to seegments.
* \return ELFLOADER_OK if loading and relocation worked.
* Otherwise an error value.
*

View file

@ -271,6 +271,9 @@
*/
#define NIC_MMUCR (LANC111_BASE_ADDR + 0x00)
/*!
* \brief MMU command register busy flag.
*/
#define MMUCR_BUSY 0x0001
#define MMU_NOP 0
@ -292,7 +295,7 @@
/*!
* \brief Bank 2 - Allocation result register.
*
* This byte register is updated upon a \ref MMU_ALO command.
* This byte register is updated upon a MMU_ALO command.
*/
#define NIC_ARR (LANC111_BASE_ADDR + 0x03)
@ -334,14 +337,14 @@
*/
#define NIC_MSK (LANC111_BASE_ADDR + 0x0D)
#define INT_MD 0x80 /*!< \ref PHY state change interrupt bit mask. */
#define INT_ERCV 0x40 /*!< \ref Early receive interrupt bit mask. */
#define INT_EPH 0x20 /*!< \ref Ethernet protocol interrupt bit mask. */
#define INT_RX_OVRN 0x10 /*!< \ref Receive overrun interrupt bit mask. */
#define INT_ALLOC 0x08 /*!< \ref Transmit allocation interrupt bit mask. */
#define INT_TX_EMPTY 0x04 /*!< \ref Transmitter empty interrupt bit mask. */
#define INT_TX 0x02 /*!< \ref Transmit complete interrupt bit mask. */
#define INT_RCV 0x01 /*!< \ref Receive interrupt bit mask. */
#define INT_MD 0x80 /*!< PHY state change interrupt bit mask. */
#define INT_ERCV 0x40 /*!< Early receive interrupt bit mask. */
#define INT_EPH 0x20 /*!< Ethernet protocol interrupt bit mask. */
#define INT_RX_OVRN 0x10 /*!< Receive overrun interrupt bit mask. */
#define INT_ALLOC 0x08 /*!< Transmit allocation interrupt bit mask. */
#define INT_TX_EMPTY 0x04 /*!< Transmitter empty interrupt bit mask. */
#define INT_TX 0x02 /*!< Transmit complete interrupt bit mask. */
#define INT_RCV 0x01 /*!< Receive interrupt bit mask. */
/*!
* \brief Bank 3 - Multicast table register.
@ -493,12 +496,6 @@
#define nic_bs(bank) nic_outlb(NIC_BSR, bank)
/*!
* \struct _NICINFO lanc111.h dev/lanc111.h
* \brief Network interface controller information structure.
*/
/*@}*/
/*!
* \addtogroup xgNicLanc111
*/
@ -840,10 +837,10 @@ static int NicStart(CONST uint8_t * mac)
return 0;
}
#if 0
/*
* NIC interrupt entry.
*/
#if 0
static void NicInterrupt(void *arg)
{
uint8_t isr;
@ -955,7 +952,7 @@ static void NicRead(uint8_t * buf, uint16_t len)
*
* Nic interrupts must be disabled when calling this funtion.
*
* \return Pointer to an allocated ::NETBUF. If there is no
* \return Pointer to an allocated NETBUF. If there is no
* no data available, then the function returns a
* null pointer. If the NIC's buffer seems to be
* corrupted, a pointer to 0xFFFF is returned.
@ -1014,6 +1011,7 @@ static NETBUF *NicGetPacket(void)
return nb;
}
#if 0
/*!
* \brief Load a packet into the nic's transmit ring buffer.
*
@ -1028,7 +1026,6 @@ static NETBUF *NicGetPacket(void)
* will automatically release the network buffer
* structure.
*/
#if 0
static int NicPutPacket(NETBUF * nb)
{
uint16_t sz;
@ -1119,13 +1116,12 @@ static int NicPutPacket(NETBUF * nb)
return 0;
}
#endif
#endif /* 0 */
/*! \fn NicRxLanc(void *arg)
* \brief NIC receiver thread.
*
*/
#if 1
/*!
* \brief NIC receiver thread.
*/
PROCESS_THREAD(lanc111_process, ev, data)
/*THREAD(NicRxLanc, arg)*/
{
@ -1202,7 +1198,7 @@ PROCESS_THREAD(lanc111_process, ev, data)
PROCESS_END();
}
#endif /* 0 */
#endif /* 1 */
#if 0
/*!
* \brief Send Ethernet packet.
@ -1245,7 +1241,7 @@ int LancOutput(NUTDEVICE * dev, NETBUF * nb)
}
return rc;
}
#endif
#endif /* 0 */
#if 0
/*!
* \brief Initialize Ethernet hardware.
@ -1340,7 +1336,7 @@ NUTDEVICE devSmsc111 = {
};
/*@}*/
#endif
#endif /* 0 */
int

View file

@ -26,6 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*/
/**
* \file
* Dummy implementation of minileds module

View file

@ -34,7 +34,7 @@
*/
/**
* \file printf-stdarg.c
* \file lib/printf.c
*
* \brief sprintf functions to replace newlib for AVR32 UC3.
*

View file

@ -10,12 +10,12 @@
#ifndef ERRORS_H_
#define ERRORS_H_
#ifndef __STSTATUS_TYPE__
#define __STSTATUS_TYPE__
/**
* @brief Return type for St functions.
*/
#ifndef __STSTATUS_TYPE__
#define __STSTATUS_TYPE__
typedef uint8_t StStatus;
typedef uint8_t StStatus;
#endif //__STSTATUS_TYPE__
/**
@ -27,7 +27,7 @@
* @brief Macro used by error-def.h to define all of the return codes.
*
* @param symbol The name of the constant being defined. All St returns
* begin with ST_. For example, ::ST_CONNECTION_OPEN.
* begin with ST_. For example, ::ST_ERR_FATAL.
*
* @param value The value of the return code. For example, 0x61.
*/
@ -36,9 +36,7 @@
enum {
#ifndef DOXYGEN_SHOULD_SKIP_THIS
#include "error-def.h"
#endif //DOXYGEN_SHOULD_SKIP_THIS
/** Gets defined as a count of all the possible return codes in the
* StZNet stack API.
*/

View file

@ -7,6 +7,7 @@
#ifndef MFG_TOKEN_H_
#define MFG_TOKEN_H_
#ifndef DOXYGEN_SHOULD_SKIP_THIS
// The manufacturing tokens live in the Info Blocks, while all other tokens
// live in the Simulated EEPROM. This requires the token names to be defined
@ -20,10 +21,13 @@
* that point to the correct location in the Info Blocks. (This is the
* extern, the actual definition is found in hal/micro/cortexm3/token.c)
*
* \param name: The name of the token.
*
* \param TOKEN_##name##_ADDRESS: The address in EEPROM at which the token
* will be stored. This parameter is generated with a macro above.
* \param name: The name of the token.
* \param creator: The manufacturing creators.
* \param iscnt:
* \param isidx:
* \param type: The token type. The types are found in token-stack.h.
* \param arraysize: The number of elements in an indexed token (arraysize=1
* for scalar tokens).
*/
#define TOKEN_MFG(name,creator,iscnt,isidx,type,arraysize,...) \
extern const uint16_t TOKEN_##name;
@ -34,9 +38,13 @@
* \brief Macro for translating token definitions into size variables.
* This provides a convenience for abstracting the 'sizeof(type)' anywhere.
*
* \param name: The name of the token.
*
* \param type: The token type. The types are found in token-stack.h.
* \param name: The name of the token.
* \param creator: The manufacturing creators.
* \param iscnt:
* \param isidx:
* \param type: The token type. The types are found in token-stack.h.
* \param arraysize: The number of elements in an indexed token (arraysize=1
* for scalar tokens).
*/
#define TOKEN_MFG(name,creator,iscnt,isidx,type,arraysize,...) \
TOKEN_##name##_SIZE = sizeof(type),
@ -49,12 +57,16 @@
/**
* \brief Macro for typedef'ing the CamelCase token type found in
* token-stack.h to a capitalized TOKEN style name that ends in _TYPE.
* This macro allows other macros below to use 'token##_TYPE' to declare
* This macro allows other macros below to use 'token\#\#_TYPE' to declare
* a local copy of that token.
*
* \param name: The name of the token.
*
* \param type: The token type. The types are found in token-stack.h.
* \param name: The name of the token.
* \param creator: The manufacturing creators.
* \param iscnt:
* \param isidx:
* \param type: The token type. The types are found in token-stack.h.
* \param arraysize: The number of elements in an indexed token (arraysize=1
* for scalar tokens).
*/
#define TOKEN_MFG(name,creator,iscnt,isidx,type,arraysize,...) \
typedef type TOKEN_##name##_TYPE;
@ -70,8 +82,7 @@
* subsequent tokens to align against. ( See hal/micro/cortexm3/token.c for
* the instances of TOKEN_NEXT_ADDRESS() );
*
* \param region: The name to give to the element in the address enum..
*
* \param region: The name to give to the element in the address enum.
* \param address: The address in EEPROM where the region begins.
*/
#define TOKEN_NEXT_ADDRESS(region, address) \
@ -80,14 +91,17 @@
/**
* \brief Macro for creating ADDRESS and END elements for each token in
* the enum below. The ADDRESS element is linked to from the the normal
* TOKEN_##name macro and provides the value passed into the internal token
* TOKEN_\#\#name macro and provides the value passed into the internal token
* system calls. The END element is a placeholder providing the starting
* point for the ADDRESS of the next dynamically positioned token.
*
* \param name: The name of the token.
*
* \param arraysize: The number of elements in an indexed token (arraysize=1
* for scalar tokens).
* \param name: The name of the token.
* \param creator: The manufacturing creators.
* \param iscnt:
* \param isidx:
* \param type: The token type. The types are found in token-stack.h.
* \param arraysize: The number of elements in an indexed token (arraysize=1
* for scalar tokens).
*/
#define TOKEN_MFG(name,creator,iscnt,isidx,type,arraysize,...) \
TOKEN_##name##_ADDRESS, \
@ -106,8 +120,6 @@ enum {
#undef DEFINETOKENS
#ifndef DOXYGEN_SHOULD_SKIP_THIS
/**
* \brief Copies the token value from non-volatile storage into a RAM
* location. This is the internal function that the exposed API

View file

@ -14,8 +14,7 @@
* @addtogroup stm32w-cpu
* @{ */
/** @defgroup nvm
* @brief Cortex-M3 Non-Volatile Memory data storage system.
/** @defgroup nvm Cortex-M3 Non-Volatile Memory data storage system.
*
* This header defines the API for NVM data storage. This header also
* describes the algorithm behind the NVM data storage system with notes

View file

@ -33,7 +33,7 @@ typedef enum
* @param parity The type of parity used for communication.
* See the SerialParity enum for possible values
*
* @return stopbits The number of stop bits used for communication.
* @param stopbits The number of stop bits used for communication.
* Valid values are 1 or 2
*/
void uartInit(uint32_t baudrate, uint8_t databits, SerialParity parity, uint8_t stopbits);

View file

@ -15,7 +15,7 @@
* @{ */
/** \file hal/micro/generic/compiler/platform-common.h
* See \ref platform_common for detailed documentation.
* See platform_common.h for detailed documentation.
*
* <!--(C) COPYRIGHT 2010 STMicroelectronics. All rights reserved. -->
*/

View file

@ -70,38 +70,43 @@ void halInternalDisableWatchDog(uint8_t magicKey);
*/
boolean halInternalWatchDogEnabled( void );
#ifdef DOXYGEN_SHOULD_SKIP_THIS
/** @brief Enumerations for the possible microcontroller sleep modes.
* - SLEEPMODE_RUNNING
* Everything is active and running. In practice this mode is not
* used, but it is defined for completeness of information.
* - SLEEPMODE_IDLE
* Only the CPU is idled. The rest of the chip continues runing
* normally. The chip will wake from any interrupt.
* - SLEEPMODE_WAKETIMER
* The sleep timer clock sources remain running. The RC is always
* running and the 32kHz XTAL depends on the board header. Wakeup
* is possible from both GPIO and the sleep timer. System time
* is maintained. The sleep timer is assumed to be configured
* properly for wake events.
* - SLEEPMODE_MAINTAINTIMER
* The sleep timer clock sources remain running. The RC is always
* running and the 32kHz XTAL depends on the board header. Wakeup
* is possible from only GPIO. System time is maintained.
* - SLEEPMODE_NOTIMER
* The sleep timer clock sources (both RC and XTAL) are turned off.
* Wakeup is possible from only GPIO. System time is lost.
*/
#ifdef DOXYGEN_SHOULD_SKIP_THIS
enum SleepModes
#else
typedef uint8_t SleepModes;
enum
#endif
{
/**
* Everything is active and running. In practice this mode is not
* used, but it is defined for completeness of information.
*/
SLEEPMODE_RUNNING = 0,
/**
* Oly the CPU is idled. The rest of the chip continues runing
* normally. The chip will wake from any interrupt.
*/
SLEEPMODE_IDLE = 1,
/**
* The sleep timer clock sources remain running. The RC is always
* running and the 32kHz XTAL depends on the board header. Wakeup
* is possible from both GPIO and the sleep timer. System time
* is maintained. The sleep timer is assumed to be configured
* properly for wake events.
*/
SLEEPMODE_WAKETIMER = 2,
/**
* The sleep timer clock sources remain running. The RC is always
* running and the 32kHz XTAL depends on the board header. Wakeup
* is possible from only GPIO. System time is maintained.
*/
SLEEPMODE_MAINTAINTIMER = 3,
/**
* The sleep timer clock sources (both RC and XTAL) are turned off.
* Wakeup is possible from only GPIO. System time is lost.
*/
SLEEPMODE_NOTIMER = 4,
};
@ -128,15 +133,15 @@ void halCommonDelayMicroseconds(uint16_t us);
* and if yes it will jump into it according to the user parameters.
*
*
* @param mode The bootloader mode, 0 UART mode, 1 RF mode. All other
* values are reserved
* @param mode The bootloader mode, 0 UART mode, 1 RF mode. All other
* values are reserved
* @param channel The channel where the booloader will operate. 0 means
* default channel (only vaild for RF mode).
* @param panID The panID where the booloader will operate. 0xFFFF means
* default panID (only vaild for RF mode).
* default channel (only vaild for RF mode).
* @param panID The panID where the booloader will operate. 0xFFFF means
* default panID (only vaild for RF mode).
* @return An error code or it will never return.
*/
StStatus halBootloaderStart(uint8_t mode, uint8_t channel, uint16_t panId);
StStatus halBootloaderStart(uint8_t mode, uint8_t channel, uint16_t panID);
#ifdef CORTEXM3_STM32F103
#include "micro/cortexm3/stm32f103ret/micro-specific.h"

View file

@ -10,7 +10,7 @@
* @addtogroup stm32w-cpu
* @{ */
/** @defgroup system_timer
/** @defgroup system_timer System Timer
* @brief Functions that provide access to the system clock.
*
* A single system tick (as returned by ::halCommonGetInt16uMillisecondTick() and

View file

@ -427,7 +427,7 @@ EXTRACT_PACKAGE = NO
# included in the documentation.
# The default value is: NO.
EXTRACT_STATIC = NO
EXTRACT_STATIC = YES
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
# locally in source files will be included in the documentation. If set to NO
@ -1960,6 +1960,11 @@ PREDEFINED = CC_FUNCTION_POINTER_ARGS:=1 \
UIP_TCP:=1 \
UIP_UDP:=1 \
UIP_CONF_ICMP6:=1 \
UIP_ND6_DEF_MAXDADNS:=1 \
UIP_CONF_IPV6_REASSEMBLY:=1 \
RNG_CONF_USE_ADC:=0 \
RNG_CONF_USE_RADIO_CLOCK:=1 \
CLOCK_SECOND:=128 \
WITH_LOADER_ARCH:=1 \
__attribute__(x):= \
CC_ALIGN_ATTR(n):= \

BIN
doc/pics/raven3290p.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View file

@ -101,7 +101,7 @@ the link-layer addresses.
<b>Address Autoconfiguration</b><br>
The address autoconfiguration mechanism also depends on the format of
the link-layer address. The dependency is reflected in the
#uip_netif_addr_autoconf_set function in #uip-netif.c.
#uip_ds6_set_addr_iid function in uip-ds6.c.
\code
#if (UIP_LLADDR_LEN == 8)
memcpy(ipaddr->u8 + 8, lladdr, UIP_LLADDR_LEN);
@ -157,28 +157,28 @@ the header 25 bytes long).
<b>Compression schemes</b><br>
The #SICSLOWPAN_CONF_COMPRESSION compilation option defines the
compression scheme supported. We support HC1, HC01, and IPv6 compression.
HC1 and IPv6 compression are defined in RFC4944, HC01 in
draft-hui-6lowpan-hc. What we call IPv6 compression means sending packets
compression scheme supported. We support HC1, HC06, and IPv6 compression.
HC1 and IPv6 compression are defined in RFC4944, HC06 in
draft-hui-6lowpan-hc-06. What we call IPv6 compression means sending packets
with no compression, and adding the IPv6 dispatch before the IPv6 header.<br>
If at compile time IPv6 "compression" is chosen, packets sent will never
be compressed, and compressed packets will not be processed at reception.<br>
If at compile time either HC1 or HC01 are chosen, we will try to compress
If at compile time either HC1 or HC06 are chosen, we will try to compress
all fields at sending, and will accept packets compressed with the
chosen scheme, as well as uncompressed packets.<br>
Note that HC1 and HC01 supports are mutually exclusive. HC01 should soon
Note that HC1 and HC06 supports are mutually exclusive. HC06 should soon
deprecate HC1.
<b>Compression related functions</b><br>
When a packet is received, the #input function is called. Fragmentation
issues are handled, then we check the dispatch byte: if it is IPv6, we
treat the packet inline. If it is HC1 or HC01, the corresponding
decompression function (#uncompress_hdr_hc1 or #uncompress_hdr_hc01)
treat the packet inline. If it is HC1 or HC06, the corresponding
decompression function (#uncompress_hdr_hc1 or #uncompress_hdr_hc06)
is called.<br>
When a packet needs to be sent, we try to compress it. If only the IPv6
compression support is enabled, we just add the IPv6 dispatch before the
802.15.4 payload. If HC1 or HC01 support is enabled, we call the
corresponding compression function (#compress_hdr_hc1 or #compress_hdr_hc01)
802.15.4 payload. If HC1 or HC06 support is enabled, we call the
corresponding compression function (#compress_hdr_hc1 or #compress_hdr_hc06)
to compress the packet as much as possible.
<b>HC1 comments</b><br>

View file

@ -36,7 +36,7 @@ are part of the uIP IPv6 stack. A complete description can be found in the
corresponding IETF standards which are available at
http://www.ietf.org/rfc.html.
\note The #NETSTACK_CONF_WITH_IPV6 compilation flag is used to enable IPv6.
\note The NETSTACK_CONF_WITH_IPV6 compilation flag is used to enable IPv6.
It is also recommended to set #UIP_CONF_IPV6_CHECKS to 1
if one cannot guarantee that the incoming packets are correctly formed.
@ -144,10 +144,10 @@ messages are also described in uip-nd6.h although the actual code is in
uip-nd6-io.c.
<b>Neighbor discovery structures </b><br>
We use the following %neighbor discovery structures (declared in uip-nd6.c):
\li A <em>%neighbor cache</em> with entries of type #uip_nd6_neighbor
\li A <em>prefix list</em> with entries of type #uip_nd6_prefix
\li A <em>default router list</em> with entries of type #uip_nd6_defrouter
We use the following %neighbor discovery structures:
\li A <em>%neighbor cache</em> with entries of type #uip_ds6_nbr_t declared in uip-ds6-nbr.c.
\li A <em>prefix list</em> with entries of type #uip_ds6_prefix_t declared in uip-ds6.c.
\li A <em>default router list</em> with entries of type #uip_ds6_defrt_t declared in uip-ds6-route.c.
Each of this structure has its own add, remove and lookup
functions. To update an entry in a ND structure, we first do a lookup
@ -161,7 +161,7 @@ Determine the link-layer address of a %neighbor given its IPv6 address.\n
\li Neighbor unreachability detection\n
Verify that a neighbor is still reachable via a cached link-layer
address.\n
-> send a NS (done in #uip_nd6_periodic).
-> send a NS (done in #uip_ds6_neighbor_periodic).
\li Next-hop determination\n
Map an IPv6 destination address into the IPv6 address of the %neighbor
to which traffic for the destination should be sent.\n
@ -170,18 +170,18 @@ choose a default router, else send directly (done in #tcpip_ipv6_output).
\li Router, prefix, and parameter discovery\n
Update the list of default routers, on-link prefixes, and the network
parameters.\n
-> receive a RA (see #uip_nd6_io_ra_input).
-> receive a RA (see #ra_input).
\subsection autoconf Stateless Address Autoconfiguration (RFC 4862)
RFC 4862 defines two main processes:
\li Duplicate Address Detection (DAD)\n
Make sure that an address the node wished to use is not already in use
by another node.\n
-> send a NS (done in #uip_netif_dad)
-> send a NS (done in #uip_ds6_dad)
\li Address Autoconfiguration\n
Configure an address for an interface by combining a received prefix
and the interface ID (see #uip_netif_addr_add). The interface ID is
obtained from the link-layer address using #uip_netif_get_interface_id.\n
and the interface ID (see #uip_ds6_addr_add). The interface ID is
obtained from the link-layer address using #uip_ds6_set_addr_iid.\n
-> Receive a RA with a prefix information option that has the
autonomous flag set.
@ -191,7 +191,7 @@ performed for this link-local address. Available routers are
discovered by sending up to #UIP_ND6_MAX_RTR_SOLICITATIONS RS
packets. Address autoconfiguration is then performed based on the
prefix information received in the RA. The interface initialization is
performed in #uip_netif_init.
performed in #uip_ds6_init.
\subsection icmpv6 ICMPv6 (RFC 4443)
We support ICMPv6 Error messages as well as Echo Reply and Echo Request
@ -213,22 +213,18 @@ The IPv6 stack (like the IPv4 stack) is a Contiki process
PROCESS(tcpip_process, "TCP/IP stack");
\endcode
In addition to the \ref mainloop "periodic timer" that is used by TCP,
five IPv6 specific timers are attached to this %process:
\li The #uip_nd6_timer_periodic is used for periodic checking of the
%neighbor discovery structures.
\li The #uip_netif_timer_dad is used to properly paced the Neighbor
Solicitation packets sent for Duplicate Address Detection.
\li The #uip_netif_timer_rs is use to delay the sending of Router Solicitations
three IPv6 specific timers are attached to this %process:
\li The #uip_ds6_timer_rs is use to delay the sending of Router Solicitations
packets in particular during the router discovery %process.
\li The #uip_netif_timer_periodic is used to periodically check the
validity of the addresses attached to the network interface.
\li The #uip_ds6_timer_periodic is used to periodically check the
validity of the addresses attached to the network interface, to
properly paced the Neighbor Solicitation packets sent for
Duplicate Address Detection and for periodic checking of the
%neighbor discovery structures.
\li The #uip_reass_timer is used to time-out the fragment reassembly
%process.
\n
Both #uip_nd6_timer_periodic and #uip_netif_timer_periodic run continuously.
This could be avoided by using callback timers to handle ND and Netif structures timeouts.
<HR>
\section compileflags Compile time flags and variables
@ -250,7 +246,7 @@ NBR_TABLE_CONF_MAX_NEIGHBORS
\section buffers IPv6 Buffers
The IPv6 code uses the same \ref memory "single global buffer" as the
IPv4 code. This buffer should be large enough to contain one
packet of maximum size, i.e., #UIP_LINK_MTU = 1280 bytes. When \ref
packet of maximum size, i.e., #UIP_LINK_MTU = 1280 bytes. When
reass "fragment reassembly" is enabled an additional buffer of the
same size is used.
@ -258,7 +254,7 @@ The only difference with the IPv4 code is the per %neighbor buffering
that is available when #UIP_CONF_IPV6_QUEUE_PKT is set to 1. This
additional buffering is used to queue one packet per %neighbor while
performing address resolution for it. This is a very costly feature as
it increases the RAM usage by approximately #NBR_TABLE_CONF_MAX_NEIGHBORS *
it increases the RAM usage by approximately NBR_TABLE_CONF_MAX_NEIGHBORS *
#UIP_LINK_MTU bytes.
<HR>
@ -314,7 +310,7 @@ link-layer function used to send a packet. Similarly, the link-layer
should call #tcpip_input when an IP packet is received.
The code corresponding to the desired link layer is selected at
compilation time (see for example the #UIP_LL_802154 flag).
compilation time (see for example the UIP_CONF_LL_802154 flag).
<HR>

View file

@ -75,6 +75,13 @@
#include <avr/wdt.h>
#include <util/delay.h>
#if UIP_CONF_IPV6_RPL
// Include needs to be up here instead of embedded in the other
// UIP_CONF_IPV6_RPL block, as doxygen seems not to be compatible with
// #includes embedded in other functions and spits out a warning.
#include "rpl.h"
#endif
#if JACKDAW_CONF_USE_SETTINGS
#include "settings.h"
#endif
@ -579,7 +586,6 @@ void menu_process(char c)
#if UIP_CONF_IPV6_RPL
#include "rpl.h"
extern uip_ds6_netif_t uip_ds6_if;
case 'N':
{ uint8_t i,j;

View file

@ -283,6 +283,8 @@ process_run_thread_loop(void *data)
/*---------------------------------------------------------------------------*/
/**
* \brief Initialize a mote by starting processes etc.
* \param env JNI Environment interface pointer
* \param obj unused
*
* This function initializes a mote by starting certain
* processes and setting up the environment.
@ -300,12 +302,15 @@ Java_org_contikios_cooja_corecomm_CLASSNAME_init(JNIEnv *env, jobject obj)
/*---------------------------------------------------------------------------*/
/**
* \brief Get a segment from the process memory.
* \param start Start address of segment
* \param length Size of memory segment
* \param env JNI Environment interface pointer
* \param obj unused
* \param rel_addr Start address of segment
* \param length Size of memory segment
* \param mem_arr Byte array destination for the fetched memory segment
* \return Java byte array containing a copy of memory segment.
*
* Fetches a memory segment from the process memory starting at
* (start), with size (length). This function does not perform
* (rel_addr), with size (length). This function does not perform
* ANY error checking, and the process may crash if addresses are
* not available/readable.
*
@ -326,9 +331,11 @@ Java_org_contikios_cooja_corecomm_CLASSNAME_getMemory(JNIEnv *env, jobject obj,
/*---------------------------------------------------------------------------*/
/**
* \brief Replace a segment of the process memory with given byte array.
* \param start Start address of segment
* \param length Size of memory segment
* \param mem_arr Byte array contaning new memory
* \param env JNI Environment interface pointer
* \param obj unused
* \param rel_addr Start address of segment
* \param length Size of memory segment
* \param mem_arr Byte array contaning new memory
*
* Replaces a process memory segment with given byte array.
* This function does not perform ANY error checking, and the
@ -349,6 +356,8 @@ Java_org_contikios_cooja_corecomm_CLASSNAME_setMemory(JNIEnv *env, jobject obj,
/*---------------------------------------------------------------------------*/
/**
* \brief Let mote execute one "block" of code (tick mote).
* \param env JNI Environment interface pointer
* \param obj unused
*
* Let mote defined by the active contiki processes and current
* process memory execute some program code. This code must not block
@ -413,7 +422,9 @@ Java_org_contikios_cooja_corecomm_CLASSNAME_tick(JNIEnv *env, jobject obj)
/*---------------------------------------------------------------------------*/
/**
* \brief Set the relative memory address of the reference variable.
* \return Relative memory address.
* \param env JNI Environment interface pointer
* \param obj unused
* \param addr Relative memory address
*
* This is a JNI function and should only be called via the
* responsible Java part (MoteType.java).

View file

@ -359,6 +359,8 @@ process_run_thread_loop(void *data)
/*---------------------------------------------------------------------------*/
/**
* \brief Initialize a mote by starting processes etc.
* \param env JNI Environment interface pointer
* \param obj unused
*
* This function initializes a mote by starting certain
* processes and setting up the environment.
@ -376,12 +378,15 @@ Java_org_contikios_cooja_corecomm_CLASSNAME_init(JNIEnv *env, jobject obj)
/*---------------------------------------------------------------------------*/
/**
* \brief Get a segment from the process memory.
* \param start Start address of segment
* \param length Size of memory segment
* \param env JNI Environment interface pointer
* \param obj unused
* \param rel_addr Start address of segment
* \param length Size of memory segment
* \param mem_arr Byte array destination for the fetched memory segment
* \return Java byte array containing a copy of memory segment.
*
* Fetches a memory segment from the process memory starting at
* (start), with size (length). This function does not perform
* (rel_addr), with size (length). This function does not perform
* ANY error checking, and the process may crash if addresses are
* not available/readable.
*
@ -402,9 +407,11 @@ Java_org_contikios_cooja_corecomm_CLASSNAME_getMemory(JNIEnv *env, jobject obj,
/*---------------------------------------------------------------------------*/
/**
* \brief Replace a segment of the process memory with given byte array.
* \param start Start address of segment
* \param length Size of memory segment
* \param mem_arr Byte array contaning new memory
* \param env JNI Environment interface pointer
* \param obj unused
* \param rel_addr Start address of segment
* \param length Size of memory segment
* \param mem_arr Byte array contaning new memory
*
* Replaces a process memory segment with given byte array.
* This function does not perform ANY error checking, and the
@ -425,6 +432,8 @@ Java_org_contikios_cooja_corecomm_CLASSNAME_setMemory(JNIEnv *env, jobject obj,
/*---------------------------------------------------------------------------*/
/**
* \brief Let mote execute one "block" of code (tick mote).
* \param env JNI Environment interface pointer
* \param obj unused
*
* Let mote defined by the active contiki processes and current
* process memory execute some program code. This code must not block
@ -489,7 +498,9 @@ Java_org_contikios_cooja_corecomm_CLASSNAME_tick(JNIEnv *env, jobject obj)
/*---------------------------------------------------------------------------*/
/**
* \brief Set the relative memory address of the reference variable.
* \return Relative memory address.
* \param env JNI Environment interface pointer
* \param obj unused
* \param addr Relative memory address
*
* This is a JNI function and should only be called via the
* responsible Java part (MoteType.java).

View file

@ -286,7 +286,7 @@ convert(uint8_t *data, int32_t *temp, uint32_t *press)
/*---------------------------------------------------------------------------*/
/**
* \brief Returns a reading from the sensor
* \param BMP_280_SENSOR_TYPE_TEMP or BMP_280_SENSOR_TYPE_PRESS
* \param type BMP_280_SENSOR_TYPE_TEMP or BMP_280_SENSOR_TYPE_PRESS
* \return Temperature (centi degrees C) or Pressure (Pascal).
*/
static int

View file

@ -223,7 +223,7 @@ read_data(uint16_t *raw_data)
/*---------------------------------------------------------------------------*/
/**
* \brief Convert raw data to a value in lux
* \param data Pointer to a buffer with a raw sensor reading
* \param raw_data data Pointer to a buffer with a raw sensor reading
* \return Converted value (lux)
*/
static float

View file

@ -42,8 +42,8 @@ static void
activate(void)
{
/* This assumes that some other sensor system already did setup the ADC
/* (in the case of the sky platform it is sensors_light_init that does it)
* (in the case of the sky platform it is sensors_light_init that does it) */
#if 0
P6SEL |= 0x70;
P6DIR = 0x00;
P6OUT = 0x00;
@ -52,37 +52,40 @@ activate(void)
P2OUT |= 0x48;
/* stop converting immediately
/* stop converting immediately */
ADC12CTL0 &= ~ENC;
ADC12CTL1 &= ~CONSEQ_3;
/* Configure ADC12_2 to sample channel 11 (voltage) and use
/* the Vref+ as reference (SREF_1) since it is a stable reference
* the Vref+ as reference (SREF_1) since it is a stable reference */
ADC12MCTL2 = (INCH_4 + SREF_1);
ADC12MCTL3 = (INCH_5 + SREF_1);
ADC12MCTL4 = (INCH_6 + SREF_1);
/* internal temperature can be read as value(3)
/* internal temperature can be read as value(3) */
ADC12MCTL5 = (INCH_10 + SREF_1);
ADC12CTL1 |= CONSEQ_3;
ADC12CTL0 |= ENC | ADC12SC;
/* Irq_adc12_activate(&acc_sensor, 6, (INCH_11 + SREF_1)); */
Irq_adc12_activate(&acc_sensor, 6, (INCH_11 + SREF_1));
#endif /* 0 */
active = 1;
}
/*---------------------------------------------------------------------------*/
static void
deactivate(void)
{
/* irq_adc12_deactivate(&acc_sensor, 6);
acc_value = 0;*/
#if 0
irq_adc12_deactivate(&acc_sensor, 6);
acc_value = 0;
#endif /* 0 */
active = 0;
}
/*---------------------------------------------------------------------------*/
static int
value(int type)
{
/*
#if 0
switch(type) {
case 0:
return ADC12MEM2;
@ -92,7 +95,8 @@ value(int type)
return ADC12MEM4;
case 3:
return ADC12MEM5;
}*/
}
#endif /* 0 */
return 0;
}
/*---------------------------------------------------------------------------*/

View file

@ -43,8 +43,10 @@ static uint8_t active;
static int
value(int type)
{
/* ADC0 corresponds to the port under the logo, ADC1 to the port over the logo,
ADC2 and ADC3 corresponds to port on the JCreate bottom expansion port)
#if 0
/* ADC0 corresponds to the port under the logo,
* ADC1 to the port over the logo,
* ADC2 and ADC3 corresponds to port on the JCreate bottom expansion port) */
switch(type) {
case ADC0:
return ADC12MEM6;
@ -54,7 +56,8 @@ value(int type)
return ADC12MEM8;
case ADC3:
return ADC12MEM9;
}*/
}
#endif /* 0 */
return 0;
}
/*---------------------------------------------------------------------------*/
@ -77,16 +80,17 @@ configure(int type, int c)
case SENSORS_ACTIVE:
if(c) {
if(!status(SENSORS_ACTIVE)) {
/* SREF_1 is Vref+
/* MemReg6 == P6.0/A0 == port "under" logo
#if 0
/* SREF_1 is Vref+ */
/* MemReg6 == P6.0/A0 == port "under" logo */
ADC12MCTL6 = (INCH_0 + SREF_0);
/* MemReg7 == P6.1/A1 == port "over" logo
/* MemReg7 == P6.1/A1 == port "over" logo */
ADC12MCTL7 = (INCH_1 + SREF_0);
/* MemReg8 == P6.2/A2, bottom expansion port
/* MemReg8 == P6.2/A2, bottom expansion port */
ADC12MCTL8 = (INCH_2 + SREF_0);
/* MemReg9 == P6.1/A3, bottom expansion port, End Of (ADC-)Sequence
/* MemReg9 == P6.1/A3, bottom expansion port, End Of (ADC-)Sequence */
ADC12MCTL9 = (INCH_3 + SREF_0);
*/
#endif /* 0 */
sky_sensors_activate(0x0F);
active = 1;
}

View file

@ -33,22 +33,25 @@ doxygen:
@make -C $(DOCDIR) doxygen.log 2> doxygen.runerr > doxygen.runlog
summary: doxygen
@( doxyerr=`cat doxyerrors.cnt`; curerr=`cat $(DOCDIR)/doxygen.log | grep ": warning: " | wc -l` ; delta=`expr $$curerr - $$doxyerr`; \
if [ $$delta -lt 0 ] ; then echo "doxygen: FAIL ಠ_ಠ\nCongratulations you fixed `expr $$delta \"*\" -1 ` of doxyen's warnings (old: $$doxyerr new: $$curerr). Please adjust regression-tests/00-doxygen/doxyerrors.cnt accordingly." > summary; fi ;\
if [ $$delta -gt 0 ] ; then echo "doxygen: FAIL ಠ_ಠ\nYou increased the number of warnings caused by doxygen by $$delta (old: $$doxyerr new: $$curerr). Please fix these." > summary; fi ; \
if [ $$delta -eq 0 ] ; then echo "doxygen: OK\nDoxygen found $$doxyerr errors" > summary ; fi ; \
@( \
1> summary; \
if [ -s doxygen.runerr ] ; then \
echo "doxygen: FAIL ಠ_ಠ\nDoxygen caused some runtime warnings. Please fix these." >> summary; \
echo "Runtime warnings:" >> summary; \
cat doxygen.runerr >> summary; \
echo >> summary; \
fi ; \
if [ -s $(DOCDIR)/doxygen.log ] ; then \
echo "doxygen: FAIL ಠ_ಠ\nDoxygen caused some warnings. Please fix these." >> summary; \
echo "Warnings:" >> summary; \
cat $(DOCDIR)/doxygen.log >> summary; \
fi ; \
if [ ! -s summary ] ; then \
echo "doxygen: OK\nDoxygen found no warnings" >> summary; \
fi ; \
cat summary \
)
clean:
@rm -f summary doxygen.runlog doxygen.runerr
@make -C $(DOCDIR) clean

View file

@ -1 +0,0 @@
134