diff options
| author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2014-11-24 13:10:30 +0000 | 
|---|---|---|
| committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2014-11-24 13:10:30 +0000 | 
| commit | 27f7d12db5d1fcc52bf831957560c56bb384c97f (patch) | |
| tree | 7c76fff2354e66309b3ac499d3df254a3b004f43 | |
| parent | 5c6b12fbe233ddf145c54a32995d134ef1620c43 (diff) | |
| download | ChibiOS-27f7d12db5d1fcc52bf831957560c56bb384c97f.tar.gz ChibiOS-27f7d12db5d1fcc52bf831957560c56bb384c97f.tar.bz2 ChibiOS-27f7d12db5d1fcc52bf831957560c56bb384c97f.zip | |
Added license handler to RT.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@7532 35acf78f-673a-0410-8e92-d51de3d6d3f4
| -rw-r--r-- | os/rt/include/ch.h | 1 | ||||
| -rw-r--r-- | os/rt/include/chlicense.h | 243 | 
2 files changed, 244 insertions, 0 deletions
| diff --git a/os/rt/include/ch.h b/os/rt/include/ch.h index c88d39578..8e7a6c52a 100644 --- a/os/rt/include/ch.h +++ b/os/rt/include/ch.h @@ -65,6 +65,7 @@  /* Core headers.*/
  #include "chtypes.h"
  #include "chconf.h"
 +#include "chlicense.h"
  #include "chsystypes.h"
  #include "chcore.h"
  #include "chdebug.h"
 diff --git a/os/rt/include/chlicense.h b/os/rt/include/chlicense.h new file mode 100644 index 000000000..b04e1231b --- /dev/null +++ b/os/rt/include/chlicense.h @@ -0,0 +1,243 @@ +/*
 +    ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
 +                 2011,2012,2013,2014 Giovanni Di Sirio.
 +
 +    This file is part of ChibiOS/RT.
 +
 +    ChibiOS/RT is free software; you can redistribute it and/or modify
 +    it under the terms of the GNU General Public License as published by
 +    the Free Software Foundation; either version 3 of the License, or
 +    (at your option) any later version.
 +
 +    ChibiOS/RT is distributed in the hope that it will be useful,
 +    but WITHOUT ANY WARRANTY; without even the implied warranty of
 +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 +    GNU General Public License for more details.
 +
 +    You should have received a copy of the GNU General Public License
 +    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 +*/
 +
 +/**
 + * @file    chlicense.h
 + * @brief   License Module macros and structures.
 + *
 + * @addtogroup license
 + * @{
 + */
 +
 +#ifndef _CHLICENSE_H_
 +#define _CHLICENSE_H_
 +
 +/*===========================================================================*/
 +/* Module constants.                                                         */
 +/*===========================================================================*/
 +
 +/**
 + * @name   Allowed Features Levels
 + * @{
 + */
 +#define CH_FEATURES_BASIC                   0
 +#define CH_FEATURES_INTERMEDIATE            1
 +#define CH_FEATURES_FULL                    2
 +/** @} */
 +
 +/**
 + * @name    Deployment Options
 + */
 +#define CH_DEPLOY_UNLIMITED                -1
 +#define CH_DEPLOY_NONE                      0
 +/** @} */
 +
 +/**
 + * @name    Licensing Options
 + * @{
 + */
 +#define CH_LICENSE_GPL                      0
 +#define CH_LICENSE_GPL_EXCEPTION            1
 +#define CH_LICENSE_COMMERCIAL_FREE          2
 +#define CH_LICENSE_COMMERCIAL_DEVELOPER     3
 +#define CH_LICENSE_COMMERCIAL_FULL          4
 +#define CH_LICENSE_PARTNER                  5
 +/** @} */
 +
 +/*===========================================================================*/
 +/* Module pre-compile time settings.                                         */
 +/*===========================================================================*/
 +
 +/**
 + * @brief   Current license.
 + * @note    This setting is reserved to the copyright owner.
 + * @note    Changing this setting invalidates the license.
 + * @note    The license statement in the source headers is valid, applicable
 + *          and binding regardless this setting.
 + */
 +#define CH_LICENSE                          CH_LICENSE_GPL
 +
 +/*===========================================================================*/
 +/* Derived constants and error checks.                                       */
 +/*===========================================================================*/
 +
 +#if (CH_LICENSE == CH_LICENSE_GPL) || defined(__DOXYGEN__)
 +/**
 + * @brief   License identification string.
 + * @details This string identifies the license in a machine-readable
 + *          format.
 + */
 +#define CH_LICENSE_TYPE_STRING              "GNU General Public License 3 (GPL3)"
 +
 +/**
 + * @brief   Customer identification string.
 + * @details This information is only available for registered commercial users.
 + */
 +#define CH_LICENSE_ID_STRING                "N/A"
 +
 +/**
 + * @brief   Customer code.
 + * @details This information is only available for registered commercial users.
 + */
 +#define CH_LICENSE_ID_CODE                  "N/A"
 +
 +/**
 + * @brief   Code modifiability restrictions.
 + * @details This setting defines if the source code is user-modifiable or not.
 + */
 +#define CH_LICENSE_MODIFIABLE_CODE          TRUE
 +
 +/**
 + * @brief   Code functionality restrictions.
 + * @details This setting defines which features are available under the
 + *          current licensing scheme. The possible settings are:
 + *          - @p CH_FEATURES_FULL if all features are available.
 + *          - @p CH_FEATURES_INTERMEDIATE means that the following modules
 + *            are restricted:
 + *            - Tickless mode.
 + *            - Condition Variables.
 + *            - Time Measurement.
 + *            - Statistics.
 + *            .
 + *          - @p CH_FEATURES_BASIC means that the following modules
 + *            are restricted:
 + *            - Tickless mode.
 + *            - Condition Variables.
 + *            - Time Measurement.
 + *            - Statistics.
 + *            - Recursive Mutexes.
 + *            - Dynamic threading.
 + *            .
 + *          .
 + */
 +#define CH_LICENSE_FEATURES                 CH_FEATURES_FULL
 +
 +/**
 + * @brief   Code deploy restrictions.
 + * @detail  This is the per-core deploy limit allowed under the current
 + *          license scheme.
 + */
 +#define CH_LICENSE_MAX_DEPLOY               CH_DEPLOY_UNLIMITED
 +
 +#elif CH_LICENSE == CH_LICENSE_GPL_EXCEPTION
 +#define CH_LICENSE_TYPE_STRING              "GNU General Public License 3 (GPL3) + Exception"
 +#define CH_LICENSE_ID_STRING                "N/A"
 +#define CH_LICENSE_ID_CODE                  "N/A"
 +#define CH_LICENSE_MODIFIABLE_CODE          FALSE
 +#define CH_LICENSE_FEATURES                 CH_FEATURES_BASIC
 +#define CH_LICENSE_MAX_DEPLOY               CH_DEPLOY_UNLIMITED
 +
 +#elif CH_LICENSE == CH_LICENSE_COMMERCIAL_FREE
 +#include "chcustomer.h"
 +#define CH_LICENSE_TYPE_STRING              "Zero Cost Registered License"
 +#define CH_LICENSE_ID_STRING                CH_CUSTOMER_ID_STRING
 +#define CH_LICENSE_ID_CODE                  CH_CUSTOMER_ID_CODE
 +#define CH_LICENSE_MODIFIABLE_CODE          FALSE
 +#define CH_LICENSE_FEATURES                 CH_FEATURES_INTERMEDIATE
 +#define CH_LICENSE_MAX_DEPLOY               200
 +
 +#elif CH_LICENSE == CH_LICENSE_COMMERCIAL_DEVELOPER
 +#include "chcustomer.h"
 +#define CH_LICENSE_TYPE_STRING              "Developer-Only Commercial License"
 +#define CH_LICENSE_ID_STRING                CH_CUSTOMER_ID_STRING
 +#define CH_LICENSE_ID_CODE                  CH_CUSTOMER_ID_CODE
 +#define CH_LICENSE_MODIFIABLE_CODE          TRUE
 +#define CH_LICENSE_FEATURES                 CH_FEATURES_FULL
 +#define CH_LICENSE_DEPLOY_LIMIT             200
 +
 +#elif CH_LICENSE == CH_LICENSE_COMMERCIAL_FULL
 +#include "chcustomer.h"
 +#define CH_LICENSE_TYPE_STRING              "Full Commercial License"
 +#define CH_LICENSE_ID_STRING                CH_CUSTOMER_ID_STRING
 +#define CH_LICENSE_ID_CODE                  CH_CUSTOMER_ID_CODE
 +#define CH_LICENSE_MODIFIABLE_CODE          TRUE
 +#define CH_LICENSE_FEATURES                 CH_FEATURES_FULL
 +#define CH_LICENSE_MAX_DEPLOY               CH_DEPLOY_UNLIMITED
 +
 +#elif CH_LICENSE == CH_LICENSE_PARTNER
 +#include "chpartner.h"
 +#define CH_LICENSE_TYPE_STRING              "Partners Special Commercial License"
 +#define CH_LICENSE_ID_STRING                CH_PARTNER_ID_STRING
 +#define CH_LICENSE_ID_CODE                  CH_PARTNER_ID_CODE
 +#define CH_LICENSE_MODIFIABLE_CODE          CH_PARTNER_MODIFIABLE_CODE
 +#define CH_LICENSE_FEATURES                 CH_PARTNER_FEATURES_FULL
 +#define CH_LICENSE_MAX_DEPLOY               CH_PARTNER_MAX_DEPLOY
 +
 +#else
 +#error "invalid licensing option"
 +#endif
 +
 +/* Checks on the enabled features.*/
 +#if CH_LICENSE_FEATURES == CH_FEATURES_FULL
 +  /* No restrictions in full mode.*/
 +
 +#elif (CH_LICENSE_FEATURES == CH_FEATURES_INTERMEDIATE) ||                  \
 +      (CH_LICENSE_FEATURES == CH_FEATURES_BASIC)
 +  /* Restrictions in basic and intermediate modes.*/
 +  #if CH_CFG_ST_TIMEDELTA > 0
 +    #error "CH_CFG_ST_TIMEDELTA > 0, tick-less functionality restricted"
 +  #endif
 +
 +  #if CH_CFG_USE_CONDVARS
 +    #error "CH_CFG_USE_CONDVARS == TRUE, Condition Variables functionality restricted"
 +  #endif
 +
 +  #if CH_CFG_USE_TM
 +    #error "CH_CFG_USE_TM == TRUE, Time Measurement functionality restricted"
 +  #endif
 +
 +  #if CH_DBG_STATISTICS
 +    #error "CH_DBG_STATISTICS == TRUE, Condition Variables functionality restricted"
 +  #endif
 +
 +  #if CH_LICENSE_FEATURES == CH_FEATURES_BASIC
 +    /* Restrictions in basic mode.*/
 +    #if CH_CFG_USE_MUTEXES_RECURSIVE
 +      #error "CH_CFG_USE_MUTEXES_RECURSIVE == TRUE, Recursive Mutexes functionality restricted"
 +    #endif
 +
 +    #if CH_CFG_USE_DYNAMIC
 +      #error "CH_CFG_USE_DYNAMIC == TRUE, Dynamic Threads functionality restricted"
 +    #endif
 +  #endif /* CH_LICENSE_FEATURES == CH_FEATURES_BASIC */
 +
 +#else
 +  #error "invalid feature settings"
 +#endif
 +
 +/*===========================================================================*/
 +/* Module data structures and types.                                         */
 +/*===========================================================================*/
 +
 +/*===========================================================================*/
 +/* Module macros.                                                            */
 +/*===========================================================================*/
 +
 +/*===========================================================================*/
 +/* External declarations.                                                    */
 +/*===========================================================================*/
 +
 +/*===========================================================================*/
 +/* Module inline functions.                                                  */
 +/*===========================================================================*/
 +
 +#endif /* _CHLICENSE_H_ */
 +
 +/** @} */
 | 
