aboutsummaryrefslogtreecommitdiffstats
path: root/examples/simple/custom_contentview.py
blob: 77d324740a0dfecc2a73495a60524afc84c97b8a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
"""
This example shows how one can add a custom contentview to mitmproxy.
The content view API is explained in the mitmproxy.contentviews module.
"""
from mitmproxy import contentviews


class ViewSwapCase(contentviews.View):
    name = "swapcase"
    content_types = ["text/plain"]

    def __call__(self, data, **metadata) -> contentviews.TViewResult:
        return "case-swapped text", contentviews.format_text(data.swapcase())


view = ViewSwapCase()


def load(l):
    contentviews.add(view)


def done():
    contentviews.remove(view)
light .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
/*
    ChibiOS/HAL - Copyright (C) 2014 Uladzimir Pylinsky aka barthess

    This file is part of ChibiOS/HAL

    ChibiOS/HAL 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/>.
*/
/*
   Concepts and parts of this file have been contributed by Uladzimir Pylinsky
   aka barthess.
 */

/**
 * @file    nand.h
 * @brief   NAND Driver macros and structures.
 *
 * @addtogroup NAND
 * @{
 */

#ifndef _NAND_H_
#define _NAND_H_

#if HAL_USE_NAND || defined(__DOXYGEN__)

/*===========================================================================*/
/* Driver constants.                                                         */
/*===========================================================================*/

/*
 * Standard NAND flash commands
 */
#define NAND_CMD_READ0          0x00
#define NAND_CMD_RNDOUT         0x05
#define NAND_CMD_PAGEPROG       0x10
#define NAND_CMD_READ0_CONFIRM  0x30
#define NAND_CMD_READOOB        0x50
#define NAND_CMD_ERASE          0x60
#define NAND_CMD_STATUS         0x70
#define NAND_CMD_STATUS_MULTI   0x71
#define NAND_CMD_WRITE          0x80
#define NAND_CMD_RNDIN          0x85
#define NAND_CMD_READID         0x90
#define NAND_CMD_ERASE_CONFIRM  0xD0
#define NAND_CMD_RESET          0xFF

/*===========================================================================*/
/* Driver pre-compile time settings.                                         */
/*===========================================================================*/
/**
 * @brief   Enables the mutual exclusion APIs on the NAND.
 */
#if !defined(NAND_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
#define NAND_USE_MUTUAL_EXCLUSION     FALSE
#endif

/*===========================================================================*/
/* Derived constants and error checks.                                       */
/*===========================================================================*/
#if NAND_USE_MUTUAL_EXCLUSION && !CH_CFG_USE_MUTEXES && !CH_CFG_USE_SEMAPHORES
#error "NAND_USE_MUTUAL_EXCLUSION requires CH_CFG_USE_MUTEXES and/or CH_CFG_USE_SEMAPHORES"
#endif

/*===========================================================================*/
/* Driver data structures and types.                                         */
/*===========================================================================*/

/**
 * @brief   Driver state machine possible states.
 */
typedef enum {
  NAND_UNINIT = 0,                   /**< Not initialized.                */
  NAND_STOP = 1,                     /**< Stopped.                        */
  NAND_READY = 2,                    /**< Ready.                          */
  NAND_PROGRAM = 3,                  /**< Programming in progress.        */
  NAND_ERASE = 4,                    /**< Erasing in progress.            */
  NAND_WRITE = 5,                    /**< Writing to NAND buffer.         */
  NAND_READ = 6,                     /**< Reading from NAND.              */
  NAND_DMA_TX = 7,                   /**< DMA transmitting.               */
  NAND_DMA_RX = 8,                   /**< DMA receiving.                  */
} nandstate_t;

/**
 * @brief   Type of a structure representing a NAND driver.
 */
typedef struct NANDDriver NANDDriver;

#include "nand_lld.h"

/*===========================================================================*/
/* Driver macros.                                                            */
/*===========================================================================*/

/*===========================================================================*/
/* External declarations.                                                    */
/*===========================================================================*/

#ifdef __cplusplus
extern "C" {
#endif
  void nandInit(void);
  void nandObjectInit(NANDDriver *nandp);
  void nandStart(NANDDriver *nandp, const NANDConfig *config);
  void nandStop(NANDDriver *nandp);
  void nandReadPageWhole(NANDDriver *nandp, uint32_t block,
          uint32_t page, uint8_t *data, size_t datalen);
  uint8_t nandWritePageWhole(NANDDriver *nandp, uint32_t block,
          uint32_t page, const uint8_t *data, size_t datalen);
  void nandReadPageData(NANDDriver *nandp, uint32_t block,
          uint32_t page, uint8_t *data, size_t datalen, uint32_t *ecc);
  uint8_t nandWritePageData(NANDDriver *nandp, uint32_t block,
          uint32_t page, const uint8_t *data, size_t datalen, uint32_t *ecc);
  void nandReadPageSpare(NANDDriver *nandp, uint32_t block,
          uint32_t page, uint8_t *spare, size_t sparelen);
  uint8_t nandWritePageSpare(NANDDriver *nandp, uint32_t block,
          uint32_t page, const uint8_t *spare, size_t sparelen);
  void nandMarkBad(NANDDriver *nandp, uint32_t block);
  uint8_t nandReadBadMark(NANDDriver *nandp,
          uint32_t block, uint32_t page);
  uint8_t nandErase(NANDDriver *nandp, uint32_t block);
  bool nandIsBad(NANDDriver *nandp, uint32_t block);

#if NAND_USE_MUTUAL_EXCLUSION
  void nandAcquireBus(NANDDriver *nandp);
  void nandReleaseBus(NANDDriver *nandp);
#endif /* NAND_USE_MUTUAL_EXCLUSION */

#ifdef __cplusplus
}
#endif

#endif /* HAL_USE_NAND */

#endif /* _NAND_H_ */

/** @} */