mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-09-01 20:03:50 -04:00
Update to V4.5.0 files and directory structure.
This commit is contained in:
parent
1362bebfdc
commit
98a9959a44
758 changed files with 53177 additions and 3139 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
FreeRTOS.org V4.4.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.5.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
|
@ -46,19 +46,28 @@
|
|||
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
|
||||
*----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* The STR9 port can use either the watchdog or the timer 2 interrupt to generate
|
||||
* the system tick. Set configUSE_WATCHDOG_TICK to 1 to use the watchdog, or
|
||||
* 0 to use timer 2.
|
||||
*/
|
||||
#define configUSE_WATCHDOG_TICK 1
|
||||
|
||||
|
||||
#define configUSE_PREEMPTION 1
|
||||
#define configUSE_IDLE_HOOK 0
|
||||
#define configUSE_TICK_HOOK 0
|
||||
#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 96000000 )
|
||||
#define configCPU_PERIPH_HZ ( ( unsigned portLONG ) 48000000 )
|
||||
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
|
||||
#define configTICK_RATE_HZ ( ( portTickType ) 100 )
|
||||
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
|
||||
#define configMINIMAL_STACK_SIZE ( ( unsigned portSHORT ) 180 )
|
||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) 50000 )
|
||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) 52000 )
|
||||
#define configMAX_TASK_NAME_LEN ( 16 )
|
||||
#define configUSE_TRACE_FACILITY 1
|
||||
#define configUSE_16_BIT_TICKS 0
|
||||
#define configIDLE_SHOULD_YIELD 1
|
||||
#define configUSE_MUTEXES 1
|
||||
|
||||
/* Co-routine definitions. */
|
||||
#define configUSE_CO_ROUTINES 0
|
||||
|
@ -67,13 +76,13 @@
|
|||
/* Set the following definitions to 1 to include the API function, or zero
|
||||
to exclude the API function. */
|
||||
|
||||
#define INCLUDE_vTaskPrioritySet 1
|
||||
#define INCLUDE_uxTaskPriorityGet 1
|
||||
#define INCLUDE_vTaskDelete 1
|
||||
#define INCLUDE_vTaskCleanUpResources 0
|
||||
#define INCLUDE_vTaskSuspend 1
|
||||
#define INCLUDE_vTaskDelayUntil 1
|
||||
#define INCLUDE_vTaskDelay 1
|
||||
|
||||
#define INCLUDE_vTaskPrioritySet 1
|
||||
#define INCLUDE_uxTaskPriorityGet 1
|
||||
#define INCLUDE_vTaskDelete 1
|
||||
#define INCLUDE_vTaskCleanUpResources 0
|
||||
#define INCLUDE_vTaskSuspend 1
|
||||
#define INCLUDE_vTaskDelayUntil 1
|
||||
#define INCLUDE_vTaskDelay 1
|
||||
#define INCLUDE_xTaskGetCurrentTaskHandle 1
|
||||
|
||||
#endif /* FREERTOS_CONFIG_H */
|
||||
|
|
|
@ -59,10 +59,10 @@
|
|||
/************************* WIU *************************/
|
||||
//#define _WIU
|
||||
/************************* TIM *************************/
|
||||
//#define _TIM
|
||||
#define _TIM
|
||||
//#define _TIM0
|
||||
//#define _TIM1
|
||||
//#define _TIM2
|
||||
#define _TIM2
|
||||
//#define _TIM3
|
||||
/************************* GPIO ************************/
|
||||
#define _GPIO
|
||||
|
|
|
@ -93,11 +93,12 @@ typedef struct {
|
|||
|
||||
/* AddressFilteringMode */
|
||||
#define MAC_Perfect_Multicast_Perfect 0x0
|
||||
#define MAC_Perfect_Muticast_Hash 0x1<<17
|
||||
#define MAC_Hash_Multicast_Hash 0x3<<17
|
||||
#define Inverse 0x4<<17
|
||||
#define Promiscuous 0x5<<17
|
||||
#define MAC_Hash_Muticast_All 0x6<<17
|
||||
#define MAC_Perfect_Multicast_Hash 0x1<<17
|
||||
#define MAC_Hash_Multicast_Hash 0x2<<17
|
||||
#define MAC_Inverse 0x3<<17
|
||||
#define MAC_Promiscuous 0x4<<17
|
||||
#define MAC_Perfect_Multicast_All 0x5<<17
|
||||
#define MAC_Hash_Multicast_All 0x6<<17
|
||||
|
||||
/* VLANFilteringMode */
|
||||
#define VLANFilter_VLTAG_VLID 1
|
||||
|
@ -109,7 +110,7 @@ typedef struct {
|
|||
|
||||
|
||||
/* MAC Address*/
|
||||
#define MAC_ADDR0 0x0D
|
||||
#define MAC_ADDR0 0x00
|
||||
#define MAC_ADDR1 0x0A
|
||||
#define MAC_ADDR2 0x08
|
||||
#define MAC_ADDR3 0x04
|
||||
|
|
|
@ -271,7 +271,7 @@ typedef struct
|
|||
} ENET_MAC_TypeDef;
|
||||
|
||||
/* DMA Registers */
|
||||
typedef struct
|
||||
typedef struct
|
||||
{
|
||||
vu32 SCR; /* DMA Status and Control Register */
|
||||
vu32 IER; /* DMA Interrupt Sources Enable Register */
|
||||
|
@ -510,10 +510,10 @@ typedef struct
|
|||
#define AHB_DMA_B (0x68000000) /* DMA Buffered Space */
|
||||
|
||||
#define AHB_ENET_MAC_U (0x7C000400) /* ENET_MAC UnBuffered Space */
|
||||
#define AHB_ENET_MAC_B (0x6C000000) /* ENET_MAC Buffered Space */
|
||||
#define AHB_ENET_MAC_B (0x6C000400) /* ENET_MAC Buffered Space */
|
||||
|
||||
#define AHB_ENET_DMA_U (0x7C000000) /* ENET_DMA Unbuffered Space */
|
||||
#define AHB_ENET_DMA_B (0x6C000400) /* ENET_DMA Buffered Space */
|
||||
#define AHB_ENET_DMA_B (0x6C000000) /* ENET_DMA Buffered Space */
|
||||
|
||||
#define AHB_VIC1_U (0xFC000000) /* Secondary VIC1 UnBuffered Space */
|
||||
#define AHB_VIC0_U (0xFFFFF000) /* Primary VIC0 UnBuffered Space */
|
||||
|
@ -592,7 +592,7 @@ typedef struct
|
|||
/*----------------------------- Unbuffered Mode ------------------------------*/
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef Buffered
|
||||
#ifndef Buffered
|
||||
|
||||
/*******************************************************************************
|
||||
* AHBAPB peripheral Unbuffered Base Address *
|
||||
|
@ -618,7 +618,7 @@ typedef struct
|
|||
* EMI peripheral Unbuffered Base Address *
|
||||
*******************************************************************************/
|
||||
|
||||
#define EMI_BASE (AHB_EMI_U)
|
||||
#define EMI_BASE (AHB_EMI_U)
|
||||
|
||||
/*******************************************************************************
|
||||
* FMI peripheral Unbuffered Base Address *
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/********************
|
||||
/********************
|
||||
* Original work (C) COPYRIGHT 2006 STMicroelectronics **************************
|
||||
* Modifications (C) CopyRight 2006 Richard barry
|
||||
* File Name : 91x_enet.c
|
||||
|
@ -54,7 +54,8 @@
|
|||
#define ENET_NUM_RX_BUFFERS 8
|
||||
|
||||
static ENET_DMADSCRBase dmaTxDscrBase, dmaRxDscrBase[ ENET_NUM_RX_BUFFERS ];
|
||||
static volatile u8 RxBuff[ ENET_NUM_RX_BUFFERS ][ENET_BUFFER_SIZE], TxBuff[ENET_BUFFER_SIZE];
|
||||
static u8 RxBuff[ ENET_NUM_RX_BUFFERS ][ENET_BUFFER_SIZE];
|
||||
u8 TxBuff[ENET_BUFFER_SIZE];
|
||||
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
extern MEMCOPY_L2S_BY4();
|
||||
|
@ -93,7 +94,7 @@ void ENET_MACControlConfig(ENET_MACConfig *MAC_Config)
|
|||
ENET_MAC->MCR |= MAC_Config->AddressFilteringMode;
|
||||
|
||||
/* VLAN Filtering Mode */
|
||||
ENET_MAC->MCR = (MAC_Config->VLANFilteringMode)<<15;
|
||||
ENET_MAC->MCR |= (MAC_Config->VLANFilteringMode)<<15;
|
||||
|
||||
/*Wrong Frame Pass */
|
||||
if (MAC_Config->PassWrongFrame == ENABLE) ENET_MAC->MCR |=MAC_MCR_PWF;
|
||||
|
@ -104,8 +105,8 @@ void ENET_MACControlConfig(ENET_MACConfig *MAC_Config)
|
|||
else ENET_MAC->MCR &=~MAC_MCR_ELC;
|
||||
|
||||
/* Broadcast Frame Reception */
|
||||
if (MAC_Config->BroadcastFrameReception == ENABLE) ENET_MAC->MCR |=MAC_MCR_DBF;
|
||||
else ENET_MAC->MCR &=~MAC_MCR_DBF;
|
||||
if (MAC_Config->BroadcastFrameReception == ENABLE) ENET_MAC->MCR &=~MAC_MCR_DBF;
|
||||
else ENET_MAC->MCR |=MAC_MCR_DBF;
|
||||
|
||||
/* PacketRetry */
|
||||
if (MAC_Config->PacketRetry == ENABLE) ENET_MAC->MCR &=~MAC_MCR_DPR;
|
||||
|
@ -361,7 +362,6 @@ void ENET_Init ()
|
|||
vu32 regValue;
|
||||
ENET_MACConfig *MAC_Config;
|
||||
ENET_MACConfig config;
|
||||
u32 macAddrLow, macAddrHigh;
|
||||
|
||||
/* De-assert the SRESET bit of ENET + MAC devices */
|
||||
ENET_DMA->SCR &=~DMA_SCR_SRESET;
|
||||
|
@ -372,6 +372,7 @@ void ENET_Init ()
|
|||
MAC_Config->MIIPrescaler = MIIPrescaler_2;
|
||||
MAC_Config->LoopbackMode = DISABLE;
|
||||
MAC_Config->AddressFilteringMode = MAC_Perfect_Multicast_Perfect;
|
||||
MAC_Config->VLANFilteringMode = VLANfilter_VLTAG;
|
||||
MAC_Config->PassWrongFrame = DISABLE;
|
||||
MAC_Config->LateCollision = DISABLE;
|
||||
MAC_Config->BroadcastFrameReception = ENABLE;
|
||||
|
@ -402,24 +403,26 @@ void ENET_Init ()
|
|||
ENET_MIIWriteReg(0x0,MAC_MII_REG_XCR, 0x8000);
|
||||
|
||||
/* Delay to assure PHY reset */
|
||||
vTaskDelay( 3000 );
|
||||
vTaskDelay( 3000 / portTICK_RATE_MS );
|
||||
|
||||
/* initialize the opearting mode */
|
||||
while( ENET_SetOperatingMode() == pdFAIL )
|
||||
{
|
||||
vTaskDelay( 3000 );
|
||||
vTaskDelay( 3000 / portTICK_RATE_MS );
|
||||
}
|
||||
|
||||
|
||||
/*set MAC physical*/
|
||||
macAddrLow = (MAC_ADDR3<<24) + (MAC_ADDR2<<16) + \
|
||||
(MAC_ADDR1<<8) + MAC_ADDR0;
|
||||
|
||||
// Higher MAC address
|
||||
macAddrHigh = (MAC_ADDR5<<8) + MAC_ADDR4;
|
||||
|
||||
//ENET_MAC->MAH = (MAC_ADDR5<<8) + MAC_ADDR4;
|
||||
//ENET_MAC->MAL = (MAC_ADDR3<<24) + (MAC_ADDR2<<16) + (MAC_ADDR1<<8) + MAC_ADDR0;
|
||||
|
||||
/* Initialize Rx and Tx descriptors in memory */
|
||||
ENET_TxDscrInit();
|
||||
ENET_RxDscrInit();
|
||||
|
||||
// What's happening ???
|
||||
#ifdef DEBUG
|
||||
//int pippo = 1; // Do NOT remove!!!
|
||||
#endif
|
||||
}
|
||||
|
||||
/********************************************************************************
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
|
||||
* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
|
||||
*******************************************************************************/
|
||||
#include "FreeRTOSConfig.h"
|
||||
#include "91x_it.h"
|
||||
|
||||
/*******************************************************************************
|
||||
|
@ -136,9 +137,9 @@ void TIM1_IRQHandler(void)
|
|||
* Output : None
|
||||
* Return : None
|
||||
*******************************************************************************/
|
||||
void TIM2_IRQHandler(void)
|
||||
{
|
||||
}
|
||||
//void TIM2_IRQHandler(void)
|
||||
//{
|
||||
//}
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM3_IRQHandler
|
||||
* Description : This function handles the TIM3 interrupt request
|
||||
|
@ -371,4 +372,16 @@ void PFQBC_IRQHandler(void)
|
|||
{
|
||||
}
|
||||
|
||||
#if configUSE_WATCHDOG_TICK == 0
|
||||
/* The kernel is not using the watchdog interrupt so it can be defined here. */
|
||||
void WDG_IRQHandler( void )
|
||||
{
|
||||
}
|
||||
#else
|
||||
/* The kernel is not using the timer 2 interrupt so it can be defined here. */
|
||||
void TIM2_IRQHandler( void )
|
||||
{
|
||||
}
|
||||
#endif /* configUSE_WATCHDOG_TICK */
|
||||
|
||||
/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/
|
||||
|
|
692
Demo/ARM9_STR91X_IAR/Library/source/91x_tim.c
Normal file
692
Demo/ARM9_STR91X_IAR/Library/source/91x_tim.c
Normal file
|
@ -0,0 +1,692 @@
|
|||
/******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
|
||||
* File Name : 91x_tim.c
|
||||
* Author : MCD Application Team
|
||||
* Date First Issued : 05/18/2006 : Version 1.0
|
||||
* Description : This file provides all the TIM software functions.
|
||||
********************************************************************************
|
||||
* History:
|
||||
* 05/22/2007 : Version 1.2
|
||||
* 05/24/2006 : Version 1.1
|
||||
* 05/18/2006 : Version 1.0
|
||||
********************************************************************************
|
||||
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
|
||||
* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS
|
||||
* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
|
||||
* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
||||
* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
|
||||
* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
|
||||
*******************************************************************************/
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "91x_tim.h"
|
||||
|
||||
/* Include of other module interface headers ---------------------------------*/
|
||||
/* Local includes ------------------------------------------------------------*/
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
/* Private define ------------------------------------------------------------*/
|
||||
|
||||
/* TIM Bits Masks */
|
||||
|
||||
#define TIM_PWM_MASK 0x0010
|
||||
#define TIM_OPM_MASK 0x0020
|
||||
#define TIM_OC1_ENABLE_MASK 0x0040
|
||||
#define TIM_OC1_DISABLE_MASK 0xFFBF
|
||||
#define TIM_OC2_ENABLE_MASK 0x0080
|
||||
#define TIM_OC2_DISABLE_MASK 0xFF7F
|
||||
|
||||
#define TIM_OLVL1_SET_MASK 0x0100
|
||||
#define TIM_OLVL1_RESET_MASK 0xFEFF
|
||||
|
||||
#define TIM_OLVL2_SET_MASK 0x0200
|
||||
#define TIM_OLVL2_RESET_MASK 0xFDFF
|
||||
|
||||
#define TIM_ENABLE_MASK 0x8000
|
||||
#define TIM_DISABLE_MASK 0x7FFF
|
||||
|
||||
#define TIM_DMA_CLEAR_MASK 0xCFFF
|
||||
|
||||
/* Private macro -------------------------------------------------------------*/
|
||||
/* Private variables ---------------------------------------------------------*/
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
/* Interface functions -------------------------------------------------------*/
|
||||
/* Private functions ---------------------------------------------------------*/
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_DeInit
|
||||
* Description : Initializes TIM peripheral control and registers to their
|
||||
* : default reset values.
|
||||
* Input : TIMx: where x can be from 0 to 3 to select the TIM
|
||||
* peripheral.
|
||||
* Output : None
|
||||
* Return : None
|
||||
*******************************************************************************/
|
||||
void TIM_DeInit(TIM_TypeDef *TIMx)
|
||||
{
|
||||
if((TIMx == TIM0)||(TIMx == TIM1))
|
||||
{
|
||||
SCU_APBPeriphReset(__TIM01, DISABLE); /* TIM0 & TIM1 Reset's off */
|
||||
}
|
||||
else
|
||||
{
|
||||
SCU_APBPeriphReset(__TIM23, DISABLE); /* TIM2 & TIM3 Reset's off */
|
||||
}
|
||||
|
||||
/* Set all the TIMx registers to thier default values */
|
||||
TIMx->OC1R = 0x8000;
|
||||
TIMx->OC2R = 0x8000;
|
||||
TIMx->CR1 = 0x0;
|
||||
TIMx->CR2 = 0x1;
|
||||
TIMx->CNTR = 0x1234;
|
||||
TIMx->SR = 0x0;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_StructInit
|
||||
* Description : Fills in a TIM_InitTypeDef structure with the reset value of
|
||||
* each parameter.
|
||||
* Input : TIM_InitStruct : pointer to a TIM_InitTypeDef structure
|
||||
which will be initialized.
|
||||
* Output : None
|
||||
* Return : None.
|
||||
*******************************************************************************/
|
||||
void TIM_StructInit(TIM_InitTypeDef *TIM_InitStruct)
|
||||
{
|
||||
TIM_InitStruct->TIM_Mode = 0x0000;
|
||||
TIM_InitStruct->TIM_OC1_Modes = 0x0000;
|
||||
TIM_InitStruct->TIM_OC2_Modes = 0x0000;
|
||||
TIM_InitStruct->TIM_Clock_Source = 0x0000;
|
||||
TIM_InitStruct->TIM_Clock_Edge = 0x0000;
|
||||
TIM_InitStruct->TIM_OPM_INPUT_Edge = 0x0000;
|
||||
TIM_InitStruct->TIM_ICAP1_Edge = 0x0000;
|
||||
TIM_InitStruct->TIM_ICAP2_Edge = 0x0000;
|
||||
TIM_InitStruct->TIM_Prescaler = 0x0000;
|
||||
TIM_InitStruct->TIM_Pulse_Level_1 = 0x0000;
|
||||
TIM_InitStruct->TIM_Pulse_Level_2 = 0x0000;
|
||||
TIM_InitStruct->TIM_Period_Level = 0x0000;
|
||||
TIM_InitStruct->TIM_Pulse_Length_1 = 0x0000;
|
||||
TIM_InitStruct->TIM_Pulse_Length_2 = 0x0000;
|
||||
TIM_InitStruct->TIM_Full_Period = 0x0000;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_Init
|
||||
* Description : Initializes TIM peripheral according to the specified
|
||||
* parameters in the TIM_InitTypeDef structure.
|
||||
* Input1 : TIMx: where x can be from 0 to 3 to select the TIM
|
||||
* peripheral.
|
||||
* Input2 : TIM_InitStruct: pointer to a TIM_InitTypeDef structure that
|
||||
* contains the configuration information for the specified
|
||||
* TIM peripheral.
|
||||
* Output : None
|
||||
* Return : None
|
||||
*******************************************************************************/
|
||||
|
||||
void TIM_Init(TIM_TypeDef *TIMx, TIM_InitTypeDef *TIM_InitStruct)
|
||||
{
|
||||
/***************************** Clock configuration ****************************/
|
||||
|
||||
if (TIM_InitStruct->TIM_Clock_Source == TIM_CLK_APB)
|
||||
{
|
||||
/* APB clock */
|
||||
TIMx->CR1 &= TIM_CLK_APB;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* External/SCU clock */
|
||||
TIMx->CR1 |= TIM_CLK_EXTERNAL;
|
||||
if (TIM_InitStruct->TIM_Clock_Edge == TIM_CLK_EDGE_RISING)
|
||||
{
|
||||
/* Clock rising edge */
|
||||
TIMx->CR1 |= TIM_CLK_EDGE_RISING;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Clock falling edge */
|
||||
TIMx->CR1 &= TIM_CLK_EDGE_FALLING;
|
||||
}
|
||||
}
|
||||
|
||||
/************************** Prescaler configuration ***************************/
|
||||
|
||||
TIMx->CR2 =( TIMx->CR2 & 0xFF00 )|TIM_InitStruct->TIM_Prescaler ;
|
||||
|
||||
/********************************** TIM Modes *********************************/
|
||||
|
||||
switch ( TIM_InitStruct->TIM_Mode)
|
||||
{
|
||||
/******************************* PWM Input mode *******************************/
|
||||
|
||||
case TIM_PWMI:
|
||||
|
||||
/* Set the PWMI Bit */
|
||||
TIMx->CR1 |= TIM_PWMI;
|
||||
|
||||
/* Set the first edge Level */
|
||||
if ( TIM_InitStruct->TIM_ICAP1_Edge == TIM_ICAP1_EDGE_RISING)
|
||||
{
|
||||
TIMx->CR1 |= TIM_ICAP1_EDGE_RISING;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR1 &= TIM_ICAP1_EDGE_FALLING;
|
||||
}
|
||||
|
||||
/* Set the Second edge Level ( Opposite of the first level ) */
|
||||
if ( TIM_InitStruct->TIM_ICAP1_Edge == TIM_ICAP1_EDGE_RISING)
|
||||
{
|
||||
TIMx->CR1 &= TIM_ICAP2_EDGE_FALLING;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR1 |= TIM_ICAP2_EDGE_RISING;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
/************************** Output compare channel 1 **************************/
|
||||
|
||||
case TIM_OCM_CHANNEL_1:
|
||||
|
||||
if (TIM_InitStruct->TIM_Pulse_Level_1 == TIM_HIGH)
|
||||
{
|
||||
TIMx->CR1 |= TIM_OLVL1_SET_MASK;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR1 &= TIM_OLVL1_RESET_MASK;
|
||||
}
|
||||
|
||||
TIMx->OC1R = TIM_InitStruct->TIM_Pulse_Length_1;
|
||||
|
||||
if (TIM_InitStruct->TIM_OC1_Modes == TIM_TIMING)
|
||||
{
|
||||
TIMx->CR1 &= TIM_OC1_DISABLE_MASK;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR1 |= TIM_OC1_ENABLE_MASK;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
/************************** Output compare channel 2 **************************/
|
||||
|
||||
case TIM_OCM_CHANNEL_2:
|
||||
|
||||
if (TIM_InitStruct->TIM_Pulse_Level_2 == TIM_HIGH)
|
||||
{
|
||||
TIMx->CR1 |= TIM_OLVL2_SET_MASK;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR1 &= TIM_OLVL2_RESET_MASK;
|
||||
}
|
||||
|
||||
TIMx->OC2R = TIM_InitStruct->TIM_Pulse_Length_2;
|
||||
|
||||
if (TIM_InitStruct->TIM_OC2_Modes == TIM_TIMING)
|
||||
{
|
||||
TIMx->CR1 &= TIM_OC2_DISABLE_MASK;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR1 |= TIM_OC2_ENABLE_MASK;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
/************************ Output compare channel 1 & 2 ************************/
|
||||
|
||||
case TIM_OCM_CHANNEL_12:
|
||||
|
||||
TIMx->OC2R = TIM_InitStruct->TIM_Pulse_Length_2;
|
||||
TIMx->OC1R = TIM_InitStruct->TIM_Pulse_Length_1;
|
||||
|
||||
if (TIM_InitStruct->TIM_OC2_Modes == TIM_TIMING)
|
||||
{
|
||||
TIMx->CR1 &= TIM_OC2_DISABLE_MASK;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR1 |= TIM_OC2_ENABLE_MASK;
|
||||
}
|
||||
|
||||
if (TIM_InitStruct->TIM_OC1_Modes == TIM_TIMING)
|
||||
{
|
||||
TIMx->CR1 &= TIM_OC1_DISABLE_MASK;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR1 |= TIM_OC1_ENABLE_MASK;
|
||||
}
|
||||
|
||||
if (TIM_InitStruct->TIM_Pulse_Level_1 == TIM_HIGH)
|
||||
{
|
||||
TIMx->CR1 |= TIM_OLVL1_SET_MASK;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR1 &= TIM_OLVL1_RESET_MASK;
|
||||
}
|
||||
|
||||
if (TIM_InitStruct->TIM_Pulse_Level_2 == TIM_HIGH)
|
||||
{
|
||||
TIMx->CR1 |= TIM_OLVL2_SET_MASK;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR1 &= TIM_OLVL2_RESET_MASK;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
/********************************** PWM mode **********************************/
|
||||
|
||||
case TIM_PWM:
|
||||
|
||||
/* Set the Level During the pulse */
|
||||
if ( TIM_InitStruct->TIM_Pulse_Level_1 == TIM_HIGH)
|
||||
{
|
||||
TIMx->CR1 |= TIM_OLVL2_SET_MASK;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR1 &= TIM_OLVL2_RESET_MASK;
|
||||
}
|
||||
|
||||
/* Set the Level after the pulse */
|
||||
if (TIM_InitStruct->TIM_Period_Level == TIM_HIGH)
|
||||
{
|
||||
TIMx->CR1 |= TIM_OLVL1_SET_MASK;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR1 &= TIM_OLVL1_RESET_MASK;
|
||||
}
|
||||
|
||||
/* Set the OCAE */
|
||||
TIMx->CR1 |= TIM_OC1_ENABLE_MASK;
|
||||
|
||||
/* Set the PWM Bit */
|
||||
TIMx->CR1 |= TIM_PWM_MASK;
|
||||
|
||||
/* Set the Duty Cycle value */
|
||||
|
||||
TIMx->OC1R = TIM_InitStruct->TIM_Pulse_Length_1 ;
|
||||
|
||||
/* Set the Full Period */
|
||||
|
||||
TIMx->OC2R = TIM_InitStruct->TIM_Full_Period ;
|
||||
|
||||
break;
|
||||
|
||||
/******************************* One pulse mode *******************************/
|
||||
|
||||
case TIM_OPM:
|
||||
|
||||
/* Set the Level During the pulse */
|
||||
if (TIM_InitStruct->TIM_Pulse_Level_1 == TIM_HIGH)
|
||||
{
|
||||
TIMx->CR1 |= TIM_OLVL2_SET_MASK;
|
||||
}
|
||||
|
||||
/* Set the Level after the pulse */
|
||||
if (TIM_InitStruct->TIM_Period_Level == TIM_HIGH)
|
||||
{
|
||||
TIMx->CR1 |= TIM_OLVL1_SET_MASK;
|
||||
}
|
||||
|
||||
/* Set the Activation Edge on the ICAP 1 */
|
||||
if (TIM_InitStruct->TIM_OPM_INPUT_Edge == TIM_OPM_EDGE_RISING)
|
||||
{
|
||||
TIMx->CR1 |= TIM_OPM_EDGE_RISING;
|
||||
}
|
||||
|
||||
/* Set the Output Compare Function */
|
||||
TIMx->CR1 |= TIM_OC1_ENABLE_MASK;
|
||||
|
||||
/* Set the One pulse mode */
|
||||
TIMx->CR1 |= TIM_OPM_MASK;
|
||||
|
||||
/* Set the Pulse length */
|
||||
TIMx->OC1R = TIM_InitStruct->TIM_Pulse_Length_1;
|
||||
|
||||
break;
|
||||
|
||||
/*************************** Input capture channel 1 **************************/
|
||||
|
||||
case TIM_ICAP_CHANNEL_1:
|
||||
|
||||
if (TIM_InitStruct->TIM_ICAP1_Edge == TIM_ICAP1_EDGE_RISING)
|
||||
{
|
||||
TIMx->CR1 |= TIM_ICAP1_EDGE_RISING;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR1 &= TIM_ICAP1_EDGE_FALLING;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
/*************************** Input capture channel 2 **************************/
|
||||
|
||||
case TIM_ICAP_CHANNEL_2:
|
||||
|
||||
if (TIM_InitStruct->TIM_ICAP2_Edge == TIM_ICAP2_EDGE_RISING)
|
||||
{
|
||||
TIMx->CR1 |= TIM_ICAP2_EDGE_RISING;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR1 &= TIM_ICAP2_EDGE_FALLING;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
/************************* Input capture channel 1 & 2 ************************/
|
||||
|
||||
case TIM_ICAP_CHANNEL_12:
|
||||
if (TIM_InitStruct->TIM_ICAP2_Edge == TIM_ICAP2_EDGE_RISING)
|
||||
{
|
||||
TIMx->CR1 |= TIM_ICAP2_EDGE_RISING;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR1 &= TIM_ICAP2_EDGE_FALLING;
|
||||
}
|
||||
|
||||
if (TIM_InitStruct->TIM_ICAP1_Edge == TIM_ICAP1_EDGE_RISING)
|
||||
{
|
||||
TIMx->CR1 |= TIM_ICAP1_EDGE_RISING;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR1 &= TIM_ICAP1_EDGE_FALLING;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_CounterCmd
|
||||
* Description : Enables or disables TIMx Counter peripheral.
|
||||
* Input1 : TIMx: where x can be from 0 to 3 to select the TIM
|
||||
* peripheral.
|
||||
* Input2 : TIM_operation: specifies the new state of the TIMx Counter.
|
||||
* This parameter can be one of the following values:
|
||||
* - TIM_START: Start the timer counter.
|
||||
* - TIM_STOP : Stop the timer counter.
|
||||
* - TIM_CLEAR: Clear the timer counter.
|
||||
* Output : None
|
||||
* Return : None
|
||||
*******************************************************************************/
|
||||
void TIM_CounterCmd(TIM_TypeDef *TIMx, TIM_CounterOperations TIM_operation)
|
||||
{
|
||||
switch (TIM_operation)
|
||||
{
|
||||
case TIM_START:
|
||||
TIMx->CR1 |= TIM_ENABLE_MASK;
|
||||
break;
|
||||
|
||||
case TIM_STOP:
|
||||
TIMx->CR1 &= TIM_DISABLE_MASK;
|
||||
break;
|
||||
|
||||
case TIM_CLEAR:
|
||||
TIMx->CNTR = 0x1234;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_PrescalerConfig
|
||||
* Description : This routine is used to configure the TIMx prescaler value
|
||||
* (when using the APB clock).
|
||||
* Input1 : TIMx: where x can be from 0 to 3 to select the TIM
|
||||
* peripheral.
|
||||
* Input2 : TIM_Prescaler: specifies the prescaler value. This parameter
|
||||
* can be a value from 0x0 to 0xFF.
|
||||
* Output : None
|
||||
* Return : None
|
||||
*******************************************************************************/
|
||||
void TIM_PrescalerConfig(TIM_TypeDef *TIMx, u8 TIM_Prescaler)
|
||||
{
|
||||
TIMx->CR2 &= 0xFF00;
|
||||
TIMx->CR2 |= TIM_Prescaler;
|
||||
|
||||
}
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_GetPrescalerValue
|
||||
* Description : This routine is used to get the TIMx prescaler value
|
||||
* (when using the APB clock).
|
||||
* Input : TIMx: where x can be from 0 to 3 to select the TIM
|
||||
* peripheral.
|
||||
* Output : None
|
||||
* Return : The prescaler value.
|
||||
*******************************************************************************/
|
||||
u8 TIM_GetPrescalerValue(TIM_TypeDef *TIMx)
|
||||
{
|
||||
return TIMx->CR2 & 0x00FF;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_GetCounterValue
|
||||
* Description : This routine is used to get the TIMx counter value.
|
||||
* Input : TIMx: where x can be from 0 to 3 to select the TIM
|
||||
* peripheral.
|
||||
* Output : None
|
||||
* Return : The counter value.
|
||||
*******************************************************************************/
|
||||
u16 TIM_GetCounterValue(TIM_TypeDef *TIMx)
|
||||
{
|
||||
return TIMx->CNTR;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_GetICAP1Value
|
||||
* Description : This routine is used to get the Input Capture 1 value.
|
||||
* Input : TIMx: where x can be from 0 to 3 to select the TIM
|
||||
* peripheral.
|
||||
* Output : None
|
||||
* Return : The Input Capture 1 value.
|
||||
*******************************************************************************/
|
||||
u16 TIM_GetICAP1Value(TIM_TypeDef *TIMx)
|
||||
{
|
||||
return TIMx->IC1R;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_GetICAP2Value
|
||||
* Description : This routine is used to get the Input Capture 2 value.
|
||||
* Input : TIMx: where x can be from 0 to 3 to select the TIM
|
||||
* peripheral.
|
||||
* Output : None
|
||||
* Return : The Input Capture 2 value.
|
||||
*******************************************************************************/
|
||||
u16 TIM_GetICAP2Value(TIM_TypeDef *TIMx)
|
||||
{
|
||||
return TIMx->IC2R;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_SetPulse
|
||||
* Description : This routine is used to set the pulse value.
|
||||
* Input1 : TIMx: where x can be from 0 to 3 to select the TIM
|
||||
* peripheral.
|
||||
* Input2 : TIM_Channel: specifies the needed channel.
|
||||
* This parameter can be one of the following values:
|
||||
* - TIM_PWM_OC1_Channel: PWM/Output Compare 1 Channel
|
||||
* - TIM_OC2_Channel : Output Compare 2 Channel
|
||||
* Input3 : TIM_Pulse: specifies the new pulse value.
|
||||
* Output : None
|
||||
* Return : None
|
||||
*******************************************************************************/
|
||||
void TIM_SetPulse(TIM_TypeDef *TIMx,u16 TIM_Channel ,u16 TIM_Pulse)
|
||||
{
|
||||
if (TIM_Channel == TIM_PWM_OC1_Channel)
|
||||
{
|
||||
TIMx->OC1R = TIM_Pulse;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->OC2R = TIM_Pulse;
|
||||
}
|
||||
}
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_GetFlagStatus
|
||||
* Description : Checks whether the specified TIMx flag is set or not.
|
||||
* Input1 : TIMx: where x can be from 0 to 3 to select the TIM
|
||||
* peripheral.
|
||||
* Input2 : TIM_Flag: specifies the flag to check.
|
||||
* This parameter can be one of the following values:
|
||||
* - TIM_FLAG_IC1: Input Capture Channel 1 Flag
|
||||
* - TIM_FLAG_IC2: Input Capture Channel 2 Flag
|
||||
* - TIM_FLAG_TO : Timer Overflow Flag
|
||||
* - TIM_FLAG_OC1: Output Compare Channel 1 Flag
|
||||
* - TIM_FLAG_OC2: Output Compare Channel 2 Flag
|
||||
* Output : None
|
||||
* Return : The NewState of the TIM_Flag (SET or RESET).
|
||||
*******************************************************************************/
|
||||
FlagStatus TIM_GetFlagStatus(TIM_TypeDef *TIMx, u16 TIM_Flag)
|
||||
{
|
||||
if((TIMx->SR & TIM_Flag) == RESET)
|
||||
{
|
||||
return RESET;
|
||||
}
|
||||
else
|
||||
{
|
||||
return SET;
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_ClearFlag
|
||||
* Description : Clears the TIM Flag passed as a parameter.
|
||||
* Input1 : TIMx: where x can be from 0 to 3 to select the TIM
|
||||
* peripheral.
|
||||
* Input2 : TIM_Flag: specifies the flag to clear.
|
||||
* This parameter can be one of the following values:
|
||||
* - TIM_FLAG_IC1: Input Capture Channel 1 Flag
|
||||
* - TIM_FLAG_IC2: Input Capture Channel 2 Flag
|
||||
* - TIM_FLAG_TO : Timer Overflow Flag
|
||||
* - TIM_FLAG_OC1: Output Compare Channel 1 Flag
|
||||
* - TIM_FLAG_OC2: Output Compare Channel 2 Flag
|
||||
* Output : None
|
||||
* Return : None
|
||||
*******************************************************************************/
|
||||
void TIM_ClearFlag(TIM_TypeDef *TIMx, u16 TIM_Flag)
|
||||
{
|
||||
/* Clear TIM_Flag */
|
||||
TIMx->SR &= ~TIM_Flag;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_GetPWMIPulse
|
||||
* Description : This routine is used to get the Pulse value in PWMI Mode.
|
||||
* Input : TIMx: where x can be from 0 to 3 to select the TIM
|
||||
* peripheral.
|
||||
* Output : None
|
||||
* Return : The pulse value.
|
||||
*******************************************************************************/
|
||||
u16 TIM_GetPWMIPulse(TIM_TypeDef *TIMx)
|
||||
{
|
||||
return TIMx->IC2R;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_GetPWMIPeriod
|
||||
* Description : This routine is used to get the Period value in PWMI Mode.
|
||||
* Input : TIMx: where x can be from 0 to 3 to select the TIM
|
||||
* peripheral.
|
||||
* Output : None
|
||||
* Return : The period value.
|
||||
*******************************************************************************/
|
||||
u16 TIM_GetPWMIPeriod(TIM_TypeDef *TIMx)
|
||||
{
|
||||
return TIMx->IC1R;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_ITConfig
|
||||
* Description : Configures the Timer interrupt source.
|
||||
* Input1 : TIMx: where x can be from 0 to 3 to select the TIM
|
||||
* peripheral.
|
||||
* Input2 : TIM_IT: specifies the TIM interrupt source to be enabled.
|
||||
* This parameter can be one of the following values:
|
||||
* - TIM_IT_IC1: Input Capture 1 Interrupt source.
|
||||
* - TIM_IT_OC1: Output Compare 1 Interrupt source.
|
||||
* - TIM_IT_TO : Timer Overflow Interrupt source.
|
||||
* - TIM_IT_IC2: Input Capture 2 Interrupt source.
|
||||
* - TIM_IT_OC2: Output Compare 2 Interrupt source.
|
||||
* Input3 : TIM_Newstate: specifies the new state of the TIMx IT.
|
||||
* This parameter can be one of the following values:
|
||||
* - ENABLE : Enable the needed interrupt.
|
||||
* - DISABLE: Disable the needed interrupt.
|
||||
* Output : None
|
||||
* Return : None
|
||||
*******************************************************************************/
|
||||
void TIM_ITConfig(TIM_TypeDef *TIMx, u16 TIM_IT, FunctionalState TIM_Newstate)
|
||||
{
|
||||
if(TIM_Newstate == ENABLE)
|
||||
{
|
||||
TIMx->CR2 = (TIMx->CR2 & 0x00FF) | TIM_IT;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR2 &= ~TIM_IT;
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_DMAConfig
|
||||
* Description : Configures the Timer DMA source.
|
||||
* Input1 : TIMx: where x can be from 0 to 3 to select the TIM
|
||||
* peripheral.
|
||||
* Input2 : TIM_DMA_Souces: specifies the TIM DMA source to be selected.
|
||||
* This parameter can be one of the following values:
|
||||
* - TIM_DMA_IC1: Input Capture 1 DMA source.
|
||||
* - TIM_DMA_OCA1 Output Compare 1 DMA source.
|
||||
* - TIM_DMA_TO: Timer Overflow DMA source.
|
||||
* - TIM_DMA_IC2: Input Capture 2 DMA source.
|
||||
* - TIM_DMA_OC2: Output Compare 2 DMA source.
|
||||
* Output : None
|
||||
* Return : None
|
||||
*******************************************************************************/
|
||||
void TIM_DMAConfig(TIM_TypeDef *TIMx, u16 TIM_DMA_Sources)
|
||||
{
|
||||
/* Reset the DMAS[1:0] bits */
|
||||
TIMx->CR1 &= TIM_DMA_CLEAR_MASK;
|
||||
/* Set the DMAS[1:0] bits according to TIM_DMA_Sources parameter */
|
||||
TIMx->CR1 |= TIM_DMA_Sources;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : TIM_DMACmd
|
||||
* Description : Enables or disables TIMx DMA peripheral.
|
||||
* Input1 : TIMx: where x can be from 0 to 3 to select the TIM
|
||||
* peripheral.
|
||||
* Input2 : TIM_Newstate: new state of the TIMx DMA peripheral
|
||||
* This parameter can be one of the following values:
|
||||
* - ENABLE : Enable the TIMx DMA.
|
||||
* - DISABLE: Disable the TIMx DMA.
|
||||
* Output : None
|
||||
* Return : None
|
||||
*******************************************************************************/
|
||||
void TIM_DMACmd(TIM_TypeDef *TIMx, FunctionalState TIM_Newstate)
|
||||
{
|
||||
if (TIM_Newstate == ENABLE)
|
||||
{
|
||||
TIMx->CR2 |= TIM_DMA_ENABLE;
|
||||
}
|
||||
else
|
||||
{
|
||||
TIMx->CR2 &= TIM_DMA_DISABLE;
|
||||
}
|
||||
}
|
||||
/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/
|
|
@ -364,7 +364,7 @@ void VIC_ITCmd(u16 VIC_Source, FunctionalState VIC_NewState)
|
|||
|
||||
/*******************************************************************************
|
||||
* Function Name : VIC_SWITCmd
|
||||
* Description : Generate a software interrupt for the specific source
|
||||
* Description : Generate a software interrupt for the specific source
|
||||
* interrupt.
|
||||
* Input1 : VIC_Source: specifies the number of the source line.
|
||||
* This parameter can be one of the following values:
|
||||
|
@ -505,7 +505,7 @@ u32 VIC_GetCurrentISRAdd(VIC_TypeDef* VICx)
|
|||
* - PFQBC_ITLine : VIC source 31
|
||||
* Input2 : VIC_Priority: specifies the priority of the interrupt.
|
||||
* It can be a value from 0 to 15. 0 is the highest priority.
|
||||
* Input3 : void (*VIC_VectAddress)(void): specifies the ISR vector
|
||||
* Input3 : void (*VIC_VectAddress)(void): specifies the ISR vector
|
||||
* address pointer.
|
||||
* Output : None
|
||||
* Return : None
|
||||
|
@ -675,7 +675,7 @@ static void VIC_ITSourceConfig(u16 VIC_Source, u16 VIC_Priority)
|
|||
|
||||
/*******************************************************************************
|
||||
* Function Name : VIC_Config
|
||||
* Description : Configure the ISR, the line, the mode and the priority for
|
||||
* Description : Configure the ISR, the line, the mode and the priority for
|
||||
* each interrupt source line.
|
||||
* Input1 : VIC_Source: specifies the number of the source line.
|
||||
* This parameter can be one of the following values:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
FreeRTOS.org V4.4.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.5.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -272,7 +272,7 @@ void LCD_CheckMasterStatus(void)
|
|||
/* Wait until BF is cleared */
|
||||
while ((MasterStatus & 0x80))
|
||||
{
|
||||
vTaskDelay( 2 );
|
||||
vTaskDelay( 1 );
|
||||
LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_SET); /* E1 = 1 */
|
||||
MasterStatus = GPIO_Read(GPIO8);
|
||||
LCD_CtrlLinesWrite(GPIO9, CtrlPin_E1, Bit_RESET); /* E1 = 0 */
|
||||
|
@ -303,7 +303,7 @@ void LCD_CheckSlaveStatus(void)
|
|||
/* Wait until BF is cleared */
|
||||
while ((SlaveStatus & 0x80))
|
||||
{
|
||||
vTaskDelay( 2 );
|
||||
vTaskDelay( 1 );
|
||||
LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_SET); /* E2 = 1 */
|
||||
SlaveStatus = GPIO_Read(GPIO8);
|
||||
LCD_CtrlLinesWrite(GPIO9, CtrlPin_E2, Bit_RESET); /* E2 = 0 */
|
||||
|
@ -812,7 +812,7 @@ void LCD_DisplayChar(u8 Line, u8 Column, u8 Ascii, TextColorMode_TypeDef CharMod
|
|||
}
|
||||
else
|
||||
{
|
||||
DotBuffer[i] = ~AsciiDotsTable[Ascii*14+i+1];
|
||||
DotBuffer[i] = ~AsciiDotsTable[Ascii*14+i+1];
|
||||
}
|
||||
}
|
||||
/* Character displayed as black Text on white buttom */
|
||||
|
@ -820,11 +820,11 @@ void LCD_DisplayChar(u8 Line, u8 Column, u8 Ascii, TextColorMode_TypeDef CharMod
|
|||
{
|
||||
if( ( u8 ) i & 0x01 )
|
||||
{
|
||||
DotBuffer[i] = AsciiDotsTable[Ascii*14+i-1];
|
||||
DotBuffer[i] = AsciiDotsTable[Ascii*14+i-1];
|
||||
}
|
||||
else
|
||||
{
|
||||
DotBuffer[i] = AsciiDotsTable[Ascii*14+i+1];
|
||||
DotBuffer[i] = AsciiDotsTable[Ascii*14+i+1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -903,24 +903,9 @@ void LCD_DisplayString(u8 Line, u8 *ptr, TextColorMode_TypeDef CharMode)
|
|||
/* Send the string character by character on lCD */
|
||||
while ((*ptr!=0)&(i<17))
|
||||
{
|
||||
if( *ptr == ' ' )
|
||||
{
|
||||
if( ptr[1] == ' ')
|
||||
{
|
||||
vTaskDelay( 3 );
|
||||
}
|
||||
else
|
||||
{
|
||||
vTaskDelay( 16 );
|
||||
}
|
||||
}
|
||||
vTaskDelay( 1 );
|
||||
|
||||
if( *ptr == '.' )
|
||||
{
|
||||
vTaskDelay( 16 );
|
||||
}
|
||||
|
||||
/* Display one character on LCD */
|
||||
/* Display one character on LCD */
|
||||
LCD_DisplayChar(Line, RefColumn, *ptr, CharMode);
|
||||
|
||||
/* Increment the column position by 7 */
|
||||
|
|
391
Demo/ARM9_STR91X_IAR/lwip/api/sys_arch.c
Normal file
391
Demo/ARM9_STR91X_IAR/lwip/api/sys_arch.c
Normal file
|
@ -0,0 +1,391 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
|
||||
/* lwIP includes. */
|
||||
#include "lwip/debug.h"
|
||||
#include "lwip/def.h"
|
||||
#include "lwip/sys.h"
|
||||
#include "lwip/mem.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/* Message queue constants. */
|
||||
#define archMESG_QUEUE_LENGTH ( 6 )
|
||||
#define archPOST_BLOCK_TIME_MS ( ( unsigned portLONG ) 10000 )
|
||||
|
||||
struct timeoutlist
|
||||
{
|
||||
struct sys_timeouts timeouts;
|
||||
xTaskHandle pid;
|
||||
};
|
||||
|
||||
/* This is the number of threads that can be started with sys_thread_new() */
|
||||
#define SYS_THREAD_MAX 4
|
||||
|
||||
static struct timeoutlist timeoutlist[SYS_THREAD_MAX];
|
||||
static u16_t nextthread = 0;
|
||||
int intlevel = 0;
|
||||
|
||||
static sys_arch_state_t s_sys_arch_state;
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
// Creates an empty mailbox.
|
||||
sys_mbox_t
|
||||
sys_mbox_new(void)
|
||||
{
|
||||
xQueueHandle mbox;
|
||||
|
||||
mbox = xQueueCreate( archMESG_QUEUE_LENGTH, sizeof( void * ) );
|
||||
|
||||
return mbox;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
/*
|
||||
Deallocates a mailbox. If there are messages still present in the
|
||||
mailbox when the mailbox is deallocated, it is an indication of a
|
||||
programming error in lwIP and the developer should be notified.
|
||||
*/
|
||||
void
|
||||
sys_mbox_free(sys_mbox_t mbox)
|
||||
{
|
||||
if( uxQueueMessagesWaiting( mbox ) )
|
||||
{
|
||||
/* Line for breakpoint. Should never break here! */
|
||||
// __asm volatile ( "NOP" );
|
||||
}
|
||||
|
||||
vQueueDelete( mbox );
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
// Posts the "msg" to the mailbox.
|
||||
void
|
||||
sys_mbox_post(sys_mbox_t mbox, void *data)
|
||||
{
|
||||
xQueueSend( mbox, &data, ( portTickType ) ( archPOST_BLOCK_TIME_MS / portTICK_RATE_MS ) );
|
||||
}
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
/*
|
||||
Blocks the thread until a message arrives in the mailbox, but does
|
||||
not block the thread longer than "timeout" milliseconds (similar to
|
||||
the sys_arch_sem_wait() function). The "msg" argument is a result
|
||||
parameter that is set by the function (i.e., by doing "*msg =
|
||||
ptr"). The "msg" parameter maybe NULL to indicate that the message
|
||||
should be dropped.
|
||||
|
||||
The return values are the same as for the sys_arch_sem_wait() function:
|
||||
Number of milliseconds spent waiting or SYS_ARCH_TIMEOUT if there was a
|
||||
timeout.
|
||||
|
||||
Note that a function with a similar name, sys_mbox_fetch(), is
|
||||
implemented by lwIP.
|
||||
*/
|
||||
u32_t sys_arch_mbox_fetch(sys_mbox_t mbox, void **msg, u32_t timeout)
|
||||
{
|
||||
void *dummyptr;
|
||||
portTickType StartTime, EndTime, Elapsed;
|
||||
|
||||
StartTime = xTaskGetTickCount();
|
||||
|
||||
if( msg == NULL )
|
||||
{
|
||||
msg = &dummyptr;
|
||||
}
|
||||
|
||||
if( timeout != 0 )
|
||||
{
|
||||
if(pdTRUE == xQueueReceive( mbox, &(*msg), timeout ) )
|
||||
{
|
||||
EndTime = xTaskGetTickCount();
|
||||
Elapsed = EndTime - StartTime;
|
||||
if( Elapsed == 0 )
|
||||
{
|
||||
Elapsed = 1;
|
||||
}
|
||||
return ( Elapsed );
|
||||
}
|
||||
else // timed out blocking for message
|
||||
{
|
||||
*msg = NULL;
|
||||
return SYS_ARCH_TIMEOUT;
|
||||
}
|
||||
}
|
||||
else // block forever for a message.
|
||||
{
|
||||
while( pdTRUE != xQueueReceive( mbox, &(*msg), 10000 ) ) // time is arbitrary
|
||||
{
|
||||
;
|
||||
}
|
||||
EndTime = xTaskGetTickCount();
|
||||
Elapsed = EndTime - StartTime;
|
||||
if( Elapsed == 0 )
|
||||
{
|
||||
Elapsed = 1;
|
||||
}
|
||||
return ( Elapsed ); // return time blocked TBD test
|
||||
}
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
// Creates and returns a new semaphore. The "count" argument specifies
|
||||
// the initial state of the semaphore. TBD finish and test
|
||||
sys_sem_t
|
||||
sys_sem_new(u8_t count)
|
||||
{
|
||||
xSemaphoreHandle xSemaphore;
|
||||
|
||||
portENTER_CRITICAL();
|
||||
vSemaphoreCreateBinary( xSemaphore );
|
||||
if(count == 0) // Means it can't be taken
|
||||
{
|
||||
xSemaphoreTake(xSemaphore,1);
|
||||
}
|
||||
portEXIT_CRITICAL();
|
||||
|
||||
if( xSemaphore == NULL )
|
||||
{
|
||||
return NULL; // TBD need assert
|
||||
}
|
||||
else
|
||||
{
|
||||
return xSemaphore;
|
||||
}
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
/*
|
||||
Blocks the thread while waiting for the semaphore to be
|
||||
signaled. If the "timeout" argument is non-zero, the thread should
|
||||
only be blocked for the specified time (measured in
|
||||
milliseconds).
|
||||
|
||||
If the timeout argument is non-zero, the return value is the number of
|
||||
milliseconds spent waiting for the semaphore to be signaled. If the
|
||||
semaphore wasn't signaled within the specified time, the return value is
|
||||
SYS_ARCH_TIMEOUT. If the thread didn't have to wait for the semaphore
|
||||
(i.e., it was already signaled), the function may return zero.
|
||||
|
||||
Notice that lwIP implements a function with a similar name,
|
||||
sys_sem_wait(), that uses the sys_arch_sem_wait() function.
|
||||
*/
|
||||
u32_t
|
||||
sys_arch_sem_wait(sys_sem_t sem, u32_t timeout)
|
||||
{
|
||||
portTickType StartTime, EndTime, Elapsed;
|
||||
|
||||
StartTime = xTaskGetTickCount();
|
||||
|
||||
if( timeout != 0)
|
||||
{
|
||||
if( xSemaphoreTake( sem, timeout ) == pdTRUE )
|
||||
{
|
||||
EndTime = xTaskGetTickCount();
|
||||
Elapsed = EndTime - StartTime;
|
||||
if( Elapsed == 0 )
|
||||
{
|
||||
Elapsed = 1;
|
||||
}
|
||||
return (Elapsed); // return time blocked TBD test
|
||||
}
|
||||
else
|
||||
{
|
||||
return SYS_ARCH_TIMEOUT;
|
||||
}
|
||||
}
|
||||
else // must block without a timeout
|
||||
{
|
||||
while( xSemaphoreTake( sem, 10000 ) != pdTRUE )
|
||||
{
|
||||
;
|
||||
}
|
||||
EndTime = xTaskGetTickCount();
|
||||
Elapsed = EndTime - StartTime;
|
||||
if( Elapsed == 0 )
|
||||
{
|
||||
Elapsed = 1;
|
||||
}
|
||||
|
||||
return ( Elapsed ); // return time blocked
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
// Signals a semaphore
|
||||
void
|
||||
sys_sem_signal(sys_sem_t sem)
|
||||
{
|
||||
xSemaphoreGive( sem );
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
// Deallocates a semaphore
|
||||
void
|
||||
sys_sem_free(sys_sem_t sem)
|
||||
{
|
||||
vQueueDelete( sem );
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
// Initialize sys arch
|
||||
void
|
||||
sys_init(void)
|
||||
{
|
||||
|
||||
int i;
|
||||
|
||||
// Initialize the the per-thread sys_timeouts structures
|
||||
// make sure there are no valid pids in the list
|
||||
for(i = 0; i < SYS_THREAD_MAX; i++)
|
||||
{
|
||||
timeoutlist[i].pid = 0;
|
||||
}
|
||||
|
||||
// keep track of how many threads have been created
|
||||
nextthread = 0;
|
||||
|
||||
s_sys_arch_state.nTaskCount = 0;
|
||||
sys_set_default_state();
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
/*
|
||||
Returns a pointer to the per-thread sys_timeouts structure. In lwIP,
|
||||
each thread has a list of timeouts which is represented as a linked
|
||||
list of sys_timeout structures. The sys_timeouts structure holds a
|
||||
pointer to a linked list of timeouts. This function is called by
|
||||
the lwIP timeout scheduler and must not return a NULL value.
|
||||
|
||||
In a single threaded sys_arch implementation, this function will
|
||||
simply return a pointer to a global sys_timeouts variable stored in
|
||||
the sys_arch module.
|
||||
*/
|
||||
struct sys_timeouts *
|
||||
sys_arch_timeouts(void)
|
||||
{
|
||||
int i;
|
||||
xTaskHandle pid;
|
||||
struct timeoutlist *tl;
|
||||
|
||||
pid = xTaskGetCurrentTaskHandle( );
|
||||
|
||||
for(i = 0; i < nextthread; i++)
|
||||
{
|
||||
tl = &timeoutlist[i];
|
||||
if(tl->pid == pid)
|
||||
{
|
||||
return &(tl->timeouts);
|
||||
}
|
||||
}
|
||||
|
||||
// Error
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
// TBD
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
/*
|
||||
Starts a new thread with priority "prio" that will begin its execution in the
|
||||
function "thread()". The "arg" argument will be passed as an argument to the
|
||||
thread() function. The id of the new thread is returned. Both the id and
|
||||
the priority are system dependent.
|
||||
*/
|
||||
sys_thread_t sys_thread_new(void (* thread)(void *arg), void *arg, int prio)
|
||||
{
|
||||
xTaskHandle CreatedTask;
|
||||
int result;
|
||||
|
||||
result = xTaskCreate(thread, ( signed portCHAR * ) s_sys_arch_state.cTaskName, s_sys_arch_state.nStackDepth, arg, prio, &CreatedTask );
|
||||
|
||||
// For each task created, store the task handle (pid) in the timers array.
|
||||
// This scheme doesn't allow for threads to be deleted
|
||||
timeoutlist[nextthread++].pid = CreatedTask;
|
||||
|
||||
if(result == pdPASS)
|
||||
{
|
||||
++s_sys_arch_state.nTaskCount;
|
||||
|
||||
return CreatedTask;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
This optional function does a "fast" critical region protection and returns
|
||||
the previous protection level. This function is only called during very short
|
||||
critical regions. An embedded system which supports ISR-based drivers might
|
||||
want to implement this function by disabling interrupts. Task-based systems
|
||||
might want to implement this by using a mutex or disabling tasking. This
|
||||
function should support recursive calls from the same task or interrupt. In
|
||||
other words, sys_arch_protect() could be called while already protected. In
|
||||
that case the return value indicates that it is already protected.
|
||||
|
||||
sys_arch_protect() is only required if your port is supporting an operating
|
||||
system.
|
||||
*/
|
||||
sys_prot_t sys_arch_protect(void)
|
||||
{
|
||||
vPortEnterCritical();
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
This optional function does a "fast" set of critical region protection to the
|
||||
value specified by pval. See the documentation for sys_arch_protect() for
|
||||
more information. This function is only required if your port is supporting
|
||||
an operating system.
|
||||
*/
|
||||
void sys_arch_unprotect(sys_prot_t pval)
|
||||
{
|
||||
( void ) pval;
|
||||
vPortExitCritical();
|
||||
}
|
||||
|
||||
void sys_set_default_state()
|
||||
{
|
||||
s_sys_arch_state.nStackDepth = configMINIMAL_STACK_SIZE;
|
||||
sprintf(s_sys_arch_state.cTaskName, "thread%d", s_sys_arch_state.nTaskCount);
|
||||
}
|
||||
|
||||
void sys_set_state(signed portCHAR *pTaskName, unsigned portSHORT nStackSize)
|
||||
{
|
||||
s_sys_arch_state.nStackDepth = nStackSize;
|
||||
sprintf(s_sys_arch_state.cTaskName, "%s", pTaskName);
|
||||
}
|
78
Demo/ARM9_STR91X_IAR/lwip/include/arch/cc.h
Normal file
78
Demo/ARM9_STR91X_IAR/lwip/include/arch/cc.h
Normal file
|
@ -0,0 +1,78 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
* Author: Stefano Oliveri <stefano.oliveri@st.com>
|
||||
*
|
||||
*/
|
||||
#ifndef __CC_H__
|
||||
#define __CC_H__
|
||||
|
||||
#include "cpu.h"
|
||||
|
||||
//#define LWIP_PROVIDE_ERRNO 1
|
||||
#include "lwip_errno.h"
|
||||
|
||||
// Typedefs for the types used by lwip
|
||||
|
||||
typedef unsigned char u8_t;
|
||||
typedef signed char s8_t;
|
||||
typedef unsigned short u16_t;
|
||||
typedef signed short s16_t;
|
||||
typedef unsigned long u32_t;
|
||||
typedef signed long s32_t;
|
||||
typedef u32_t mem_ptr_t;
|
||||
typedef int sys_prot_t;
|
||||
|
||||
// Compiler hints for packing lwip's structures
|
||||
|
||||
#define PACK_STRUCT_BEGIN
|
||||
//#define PACK_STRUCT_BEGIN _Pragma("pack(2)")
|
||||
#define PACK_STRUCT_STRUCT
|
||||
#define PACK_STRUCT_END
|
||||
//#define PACK_STRUCT_END _Pragma("pack()")
|
||||
#define PACK_STRUCT_FIELD(x) x
|
||||
|
||||
// Platform specific diagnostic output
|
||||
|
||||
// non-fatal, print a message.
|
||||
#define LWIP_PLATFORM_DIAG(x)
|
||||
// fatal, print message and abandon execution.
|
||||
#define LWIP_PLATFORM_ASSERT(x)
|
||||
|
||||
// "lightweight" synchronization mechanisms
|
||||
|
||||
// declare a protection state variable.
|
||||
#define SYS_ARCH_DECL_PROTECT(x)
|
||||
// enter protection mode.
|
||||
#define SYS_ARCH_PROTECT(x)
|
||||
// leave protection mode.
|
||||
#define SYS_ARCH_UNPROTECT(x)
|
||||
|
||||
|
||||
#endif /* __CC_H__ */
|
37
Demo/ARM9_STR91X_IAR/lwip/include/arch/cpu.h
Normal file
37
Demo/ARM9_STR91X_IAR/lwip/include/arch/cpu.h
Normal file
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __CPU_H__
|
||||
#define __CPU_H__
|
||||
|
||||
#define BYTE_ORDER LITTLE_ENDIAN
|
||||
|
||||
#endif /* __CPU_H__ */
|
153
Demo/ARM9_STR91X_IAR/lwip/include/arch/lwip_errno.h
Normal file
153
Demo/ARM9_STR91X_IAR/lwip/include/arch/lwip_errno.h
Normal file
|
@ -0,0 +1,153 @@
|
|||
#ifndef __LWIP_ERRNO_H_
|
||||
#define __LWIP_ERRNO_H_
|
||||
|
||||
#define EPERM 1 /* Operation not permitted */
|
||||
#define ENOENT 2 /* No such file or directory */
|
||||
#define ESRCH 3 /* No such process */
|
||||
#define EINTR 4 /* Interrupted system call */
|
||||
#define EIO 5 /* I/O error */
|
||||
#define ENXIO 6 /* No such device or address */
|
||||
#define E2BIG 7 /* Arg list too long */
|
||||
#define ENOEXEC 8 /* Exec format error */
|
||||
#define EBADF 9 /* Bad file number */
|
||||
#define ECHILD 10 /* No child processes */
|
||||
#define EAGAIN 11 /* Try again */
|
||||
#define ENOMEM 12 /* Out of memory */
|
||||
#define EACCES 13 /* Permission denied */
|
||||
#define EFAULT 14 /* Bad address */
|
||||
#define ENOTBLK 15 /* Block device required */
|
||||
#define EBUSY 16 /* Device or resource busy */
|
||||
#define EEXIST 17 /* File exists */
|
||||
#define EXDEV 18 /* Cross-device link */
|
||||
#define ENODEV 19 /* No such device */
|
||||
#define ENOTDIR 20 /* Not a directory */
|
||||
#define EISDIR 21 /* Is a directory */
|
||||
#define EINVAL 22 /* Invalid argument */
|
||||
#define ENFILE 23 /* File table overflow */
|
||||
#define EMFILE 24 /* Too many open files */
|
||||
#define ENOTTY 25 /* Not a typewriter */
|
||||
#define ETXTBSY 26 /* Text file busy */
|
||||
#define EFBIG 27 /* File too large */
|
||||
#define ENOSPC 28 /* No space left on device */
|
||||
#define ESPIPE 29 /* Illegal seek */
|
||||
#define EROFS 30 /* Read-only file system */
|
||||
#define EMLINK 31 /* Too many links */
|
||||
#define EPIPE 32 /* Broken pipe */
|
||||
//#define EDOM 33 /* Math argument out of domain of func */
|
||||
//#define ERANGE 34 /* Math result not representable */
|
||||
#define EDEADLK 35 /* Resource deadlock would occur */
|
||||
#define ENAMETOOLONG 36 /* File name too long */
|
||||
#define ENOLCK 37 /* No record locks available */
|
||||
#define ENOSYS 38 /* Function not implemented */
|
||||
#define ENOTEMPTY 39 /* Directory not empty */
|
||||
#define ELOOP 40 /* Too many symbolic links encountered */
|
||||
#define EWOULDBLOCK EAGAIN /* Operation would block */
|
||||
#define ENOMSG 42 /* No message of desired type */
|
||||
#define EIDRM 43 /* Identifier removed */
|
||||
#define ECHRNG 44 /* Channel number out of range */
|
||||
#define EL2NSYNC 45 /* Level 2 not synchronized */
|
||||
#define EL3HLT 46 /* Level 3 halted */
|
||||
#define EL3RST 47 /* Level 3 reset */
|
||||
#define ELNRNG 48 /* Link number out of range */
|
||||
#define EUNATCH 49 /* Protocol driver not attached */
|
||||
#define ENOCSI 50 /* No CSI structure available */
|
||||
#define EL2HLT 51 /* Level 2 halted */
|
||||
#define EBADE 52 /* Invalid exchange */
|
||||
#define EBADR 53 /* Invalid request descriptor */
|
||||
#define EXFULL 54 /* Exchange full */
|
||||
#define ENOANO 55 /* No anode */
|
||||
#define EBADRQC 56 /* Invalid request code */
|
||||
#define EBADSLT 57 /* Invalid slot */
|
||||
|
||||
#define EDEADLOCK EDEADLK
|
||||
|
||||
#define EBFONT 59 /* Bad font file format */
|
||||
#define ENOSTR 60 /* Device not a stream */
|
||||
#define ENODATA 61 /* No data available */
|
||||
#define ETIME 62 /* Timer expired */
|
||||
#define ENOSR 63 /* Out of streams resources */
|
||||
#define ENONET 64 /* Machine is not on the network */
|
||||
#define ENOPKG 65 /* Package not installed */
|
||||
#define EREMOTE 66 /* Object is remote */
|
||||
#define ENOLINK 67 /* Link has been severed */
|
||||
#define EADV 68 /* Advertise error */
|
||||
#define ESRMNT 69 /* Srmount error */
|
||||
#define ECOMM 70 /* Communication error on send */
|
||||
#define EPROTO 71 /* Protocol error */
|
||||
#define EMULTIHOP 72 /* Multihop attempted */
|
||||
#define EDOTDOT 73 /* RFS specific error */
|
||||
#define EBADMSG 74 /* Not a data message */
|
||||
#define EOVERFLOW 75 /* Value too large for defined data type */
|
||||
#define ENOTUNIQ 76 /* Name not unique on network */
|
||||
#define EBADFD 77 /* File descriptor in bad state */
|
||||
#define EREMCHG 78 /* Remote address changed */
|
||||
#define ELIBACC 79 /* Can not access a needed shared library */
|
||||
#define ELIBBAD 80 /* Accessing a corrupted shared library */
|
||||
#define ELIBSCN 81 /* .lib section in a.out corrupted */
|
||||
#define ELIBMAX 82 /* Attempting to link in too many shared libraries */
|
||||
#define ELIBEXEC 83 /* Cannot exec a shared library directly */
|
||||
// #define EILSEQ 84 /* Illegal byte sequence */
|
||||
#define ERESTART 85 /* Interrupted system call should be restarted */
|
||||
#define ESTRPIPE 86 /* Streams pipe error */
|
||||
#define EUSERS 87 /* Too many users */
|
||||
#define ENOTSOCK 88 /* Socket operation on non-socket */
|
||||
#define EDESTADDRREQ 89 /* Destination address required */
|
||||
#define EMSGSIZE 90 /* Message too long */
|
||||
#define EPROTOTYPE 91 /* Protocol wrong type for socket */
|
||||
#define ENOPROTOOPT 92 /* Protocol not available */
|
||||
#define EPROTONOSUPPORT 93 /* Protocol not supported */
|
||||
#define ESOCKTNOSUPPORT 94 /* Socket type not supported */
|
||||
#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
|
||||
#define EPFNOSUPPORT 96 /* Protocol family not supported */
|
||||
#define EAFNOSUPPORT 97 /* Address family not supported by protocol */
|
||||
#define EADDRINUSE 98 /* Address already in use */
|
||||
#define EADDRNOTAVAIL 99 /* Cannot assign requested address */
|
||||
#define ENETDOWN 100 /* Network is down */
|
||||
#define ENETUNREACH 101 /* Network is unreachable */
|
||||
#define ENETRESET 102 /* Network dropped connection because of reset */
|
||||
#define ECONNABORTED 103 /* Software caused connection abort */
|
||||
#define ECONNRESET 104 /* Connection reset by peer */
|
||||
#define ENOBUFS 105 /* No buffer space available */
|
||||
#define EISCONN 106 /* Transport endpoint is already connected */
|
||||
#define ENOTCONN 107 /* Transport endpoint is not connected */
|
||||
#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */
|
||||
#define ETOOMANYREFS 109 /* Too many references: cannot splice */
|
||||
#define ETIMEDOUT 110 /* Connection timed out */
|
||||
#define ECONNREFUSED 111 /* Connection refused */
|
||||
#define EHOSTDOWN 112 /* Host is down */
|
||||
#define EHOSTUNREACH 113 /* No route to host */
|
||||
#define EALREADY 114 /* Operation already in progress */
|
||||
#define EINPROGRESS 115 /* Operation now in progress */
|
||||
#define ESTALE 116 /* Stale NFS file handle */
|
||||
#define EUCLEAN 117 /* Structure needs cleaning */
|
||||
#define ENOTNAM 118 /* Not a XENIX named type file */
|
||||
#define ENAVAIL 119 /* No XENIX semaphores available */
|
||||
#define EISNAM 120 /* Is a named type file */
|
||||
#define EREMOTEIO 121 /* Remote I/O error */
|
||||
#define EDQUOT 122 /* Quota exceeded */
|
||||
|
||||
#define ENOMEDIUM 123 /* No medium found */
|
||||
#define EMEDIUMTYPE 124 /* Wrong medium type */
|
||||
|
||||
|
||||
#define ENSROK 0 /* DNS server returned answer with no data */
|
||||
#define ENSRNODATA 160 /* DNS server returned answer with no data */
|
||||
#define ENSRFORMERR 161 /* DNS server claims query was misformatted */
|
||||
#define ENSRSERVFAIL 162 /* DNS server returned general failure */
|
||||
#define ENSRNOTFOUND 163 /* Domain name not found */
|
||||
#define ENSRNOTIMP 164 /* DNS server does not implement requested operation */
|
||||
#define ENSRREFUSED 165 /* DNS server refused query */
|
||||
#define ENSRBADQUERY 166 /* Misformatted DNS query */
|
||||
#define ENSRBADNAME 167 /* Misformatted domain name */
|
||||
#define ENSRBADFAMILY 168 /* Unsupported address family */
|
||||
#define ENSRBADRESP 169 /* Misformatted DNS reply */
|
||||
#define ENSRCONNREFUSED 170 /* Could not contact DNS servers */
|
||||
#define ENSRTIMEOUT 171 /* Timeout while contacting DNS servers */
|
||||
#define ENSROF 172 /* End of file */
|
||||
#define ENSRFILE 173 /* Error reading file */
|
||||
#define ENSRNOMEM 174 /* Out of memory */
|
||||
#define ENSRDESTRUCTION 175 /* Application terminated lookup */
|
||||
#define ENSRQUERYDOMAINTOOLONG 176 /* Domain name is too long */
|
||||
#define ENSRCNAMELOOP 177 /* Domain name is too long */
|
||||
|
||||
#endif // __LWIP_ERRNO_H_
|
38
Demo/ARM9_STR91X_IAR/lwip/include/arch/perf.h
Normal file
38
Demo/ARM9_STR91X_IAR/lwip/include/arch/perf.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __PERF_H__
|
||||
#define __PERF_H__
|
||||
|
||||
#define PERF_START /* null definition */
|
||||
#define PERF_STOP(x) /* null definition */
|
||||
|
||||
#endif /* __PERF_H__ */
|
62
Demo/ARM9_STR91X_IAR/lwip/include/arch/sys_arch.h
Normal file
62
Demo/ARM9_STR91X_IAR/lwip/include/arch/sys_arch.h
Normal file
|
@ -0,0 +1,62 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __SYS_RTXC_H__
|
||||
#define __SYS_RTXC_H__
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "queue.h"
|
||||
#include "semphr.h"
|
||||
|
||||
#define SYS_MBOX_NULL (xQueueHandle)0
|
||||
#define SYS_SEM_NULL (xSemaphoreHandle)0
|
||||
#define SYS_DEFAULT_THREAD_STACK_DEPTH configMINIMAL_STACK_SIZE
|
||||
|
||||
typedef xSemaphoreHandle sys_sem_t;
|
||||
typedef xQueueHandle sys_mbox_t;
|
||||
typedef xTaskHandle sys_thread_t;
|
||||
|
||||
typedef struct _sys_arch_state_t
|
||||
{
|
||||
// Task creation data.
|
||||
portCHAR cTaskName[configMAX_TASK_NAME_LEN];
|
||||
unsigned portSHORT nStackDepth;
|
||||
unsigned short nTaskCount;
|
||||
} sys_arch_state_t;
|
||||
|
||||
//extern sys_arch_state_t s_sys_arch_state;
|
||||
|
||||
void sys_set_default_state();
|
||||
void sys_set_state(signed portCHAR *pTaskName, unsigned portSHORT nStackSize);
|
||||
|
||||
#endif /* __SYS_RTXC_H__ */
|
||||
|
90
Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/BasicWEB.h
Normal file
90
Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/BasicWEB.h
Normal file
|
@ -0,0 +1,90 @@
|
|||
/*
|
||||
FreeRTOS.org V4.0.4 - copyright (C) 2003-2006 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
FreeRTOS.org 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 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
FreeRTOS.org 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 FreeRTOS.org; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
A special exception to the GPL can be applied should you wish to distribute
|
||||
a combined work that includes FreeRTOS.org, without being obliged to provide
|
||||
the source code for any proprietary components. See the licensing section
|
||||
of http://www.FreeRTOS.org for full details of how and when the exception
|
||||
can be applied.
|
||||
|
||||
***************************************************************************
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef BASIC_WEB_SERVER_H
|
||||
#define BASIC_WEB_SERVER_H
|
||||
|
||||
#include <91x_type.h>
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* MACROS */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
#define basicwebWEBSERVER_PRIORITY ( tskIDLE_PRIORITY + 2 )
|
||||
|
||||
/* The port on which we listen. */
|
||||
#define webHTTP_PORT ( 80 )
|
||||
|
||||
/* Delay on close error. */
|
||||
#define webSHORT_DELAY ( 10 / portTICK_RATE_MS )
|
||||
|
||||
/* The IP address being used. */
|
||||
#define emacIPADDR0 172
|
||||
#define emacIPADDR1 25
|
||||
#define emacIPADDR2 218
|
||||
#define emacIPADDR3 17
|
||||
|
||||
/* The gateway address being used. */
|
||||
#define emacGATEWAY_ADDR0 10
|
||||
#define emacGATEWAY_ADDR1 52
|
||||
#define emacGATEWAY_ADDR2 156
|
||||
#define emacGATEWAY_ADDR3 254
|
||||
|
||||
/* The network mask being used. */
|
||||
#define emacNET_MASK0 255
|
||||
#define emacNET_MASK1 255
|
||||
#define emacNET_MASK2 255
|
||||
#define emacNET_MASK3 0
|
||||
|
||||
#define STATIC_IP 1
|
||||
#define DHCP_IP 2
|
||||
|
||||
#define lwipBASIC_SERVER_STACK_SIZE 250
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* PROTOTYPES */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* The function that implements the WEB server task. */
|
||||
void vBasicWEBServer( void *pvParameters );
|
||||
|
||||
/* Initialisation required by lwIP. */
|
||||
void vlwIPInit( void );
|
||||
|
||||
void PrintIPOnLCD(unsigned int ipAddr);
|
||||
|
||||
void ToDoAfterGettingIP(bool dhcpStaticFlag);
|
||||
|
||||
void InitializeStaticIP(void);
|
||||
|
||||
void DelayForDHCPToCome(void);
|
||||
|
||||
#endif
|
||||
|
45
Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fs.h
Normal file
45
Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fs.h
Normal file
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __FS_H__
|
||||
#define __FS_H__
|
||||
|
||||
struct fs_file {
|
||||
char *data;
|
||||
int len;
|
||||
};
|
||||
|
||||
/* file must be allocated by caller and will be filled in
|
||||
by the function. */
|
||||
int fs_open(char *name, struct fs_file *file);
|
||||
|
||||
#endif /* __FS_H__ */
|
||||
|
50
Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fsdata.h
Normal file
50
Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/fsdata.h
Normal file
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __FSDATA_H__
|
||||
#define __FSDATA_H__
|
||||
|
||||
struct httpd_fsdata_file {
|
||||
const struct httpd_fsdata_file *next;
|
||||
const unsigned char *name;
|
||||
const unsigned char *data;
|
||||
const int len;
|
||||
};
|
||||
|
||||
struct httpd_fsdata_file_noconst {
|
||||
struct httpd_fsdata_file *next;
|
||||
unsigned char *name;
|
||||
unsigned char *data;
|
||||
int len;
|
||||
};
|
||||
|
||||
#endif /* __FSDATA_H__ */
|
||||
|
38
Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/httpd.h
Normal file
38
Demo/ARM9_STR91X_IAR/lwip/include/lwIPWebServer/httpd.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __HTTPD_H__
|
||||
#define __HTTPD_H__
|
||||
|
||||
void httpd_init(void);
|
||||
|
||||
#endif /* __HTTPD_H__ */
|
||||
|
194
Demo/ARM9_STR91X_IAR/lwip/include/lwip/lwipopts.h
Normal file
194
Demo/ARM9_STR91X_IAR/lwip/include/lwip/lwipopts.h
Normal file
|
@ -0,0 +1,194 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __LWIPOPTS_H__
|
||||
#define __LWIPOPTS_H__
|
||||
|
||||
#define LWIP_NOASSERT 1 // To suppress some errors for now (no debug output)
|
||||
#define SYS_LIGHTWEIGHT_PROT 1
|
||||
|
||||
#define TCPIP_THREAD_PRIO 3
|
||||
|
||||
#define ETH_PAD_SIZE 2
|
||||
|
||||
/* ---------- Memory options ---------- */
|
||||
/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which
|
||||
lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2
|
||||
byte alignment -> define MEM_ALIGNMENT to 2. */
|
||||
#define MEM_ALIGNMENT 4
|
||||
|
||||
/* MEM_SIZE: the size of the heap memory. If the application will send
|
||||
a lot of data that needs to be copied, this should be set high. */
|
||||
#define MEM_SIZE 8000
|
||||
|
||||
/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
|
||||
sends a lot of data out of ROM (or other static memory), this
|
||||
should be set high. */
|
||||
#define MEMP_NUM_PBUF 40
|
||||
/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
|
||||
per active UDP "connection". */
|
||||
#define MEMP_NUM_UDP_PCB 4
|
||||
/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
|
||||
connections. */
|
||||
#define MEMP_NUM_TCP_PCB 10
|
||||
/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
|
||||
connections. */
|
||||
#define MEMP_NUM_TCP_PCB_LISTEN 8
|
||||
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
|
||||
segments. */
|
||||
#define MEMP_NUM_TCP_SEG 8
|
||||
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
|
||||
timeouts. */
|
||||
#define MEMP_NUM_SYS_TIMEOUT 3
|
||||
|
||||
|
||||
/* The following four are used only with the sequential API and can be
|
||||
set to 0 if the application only will use the raw API. */
|
||||
/* MEMP_NUM_NETBUF: the number of struct netbufs. */
|
||||
#define MEMP_NUM_NETBUF 4
|
||||
/* MEMP_NUM_NETCONN: the number of struct netconns. */
|
||||
#define MEMP_NUM_NETCONN 4
|
||||
/* MEMP_NUM_APIMSG: the number of struct api_msg, used for
|
||||
communication between the TCP/IP stack and the sequential
|
||||
programs. */
|
||||
#define MEMP_NUM_API_MSG 8
|
||||
/* MEMP_NUM_TCPIPMSG: the number of struct tcpip_msg, which is used
|
||||
for sequential API communication and incoming packets. Used in
|
||||
src/api/tcpip.c. */
|
||||
#define MEMP_NUM_TCPIP_MSG 8
|
||||
|
||||
/* These two control is reclaimer functions should be compiled
|
||||
in. Should always be turned on (1). */
|
||||
#define MEM_RECLAIM 1
|
||||
#define MEMP_RECLAIM 1
|
||||
|
||||
/* ---------- Pbuf options ---------- */
|
||||
/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
|
||||
#define PBUF_POOL_SIZE 8
|
||||
|
||||
/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
|
||||
#define PBUF_POOL_BUFSIZE 1500
|
||||
|
||||
/* PBUF_LINK_HLEN: the number of bytes that should be allocated for a
|
||||
link level header. */
|
||||
#define PBUF_LINK_HLEN 16
|
||||
|
||||
/* ---------- TCP options ---------- */
|
||||
#define LWIP_TCP 1
|
||||
#define TCP_TTL 255
|
||||
|
||||
/* Controls if TCP should queue segments that arrive out of
|
||||
order. Define to 0 if your device is low on memory. */
|
||||
#define TCP_QUEUE_OOSEQ 1
|
||||
|
||||
/* TCP Maximum segment size. */
|
||||
#define TCP_MSS 1500
|
||||
|
||||
/* TCP sender buffer space (bytes). */
|
||||
#define TCP_SND_BUF 1500
|
||||
|
||||
/* TCP sender buffer space (pbufs). This must be at least = 2 *
|
||||
TCP_SND_BUF/TCP_MSS for things to work. */
|
||||
#define TCP_SND_QUEUELEN 6 * TCP_SND_BUF/TCP_MSS
|
||||
|
||||
/* TCP receive window. */
|
||||
#define TCP_WND 1500
|
||||
|
||||
/* Maximum number of retransmissions of data segments. */
|
||||
#define TCP_MAXRTX 12
|
||||
|
||||
/* Maximum number of retransmissions of SYN segments. */
|
||||
#define TCP_SYNMAXRTX 4
|
||||
|
||||
/* ---------- ARP options ---------- */
|
||||
#define ARP_TABLE_SIZE 10
|
||||
#define ARP_QUEUEING 1
|
||||
|
||||
/* ---------- IP options ---------- */
|
||||
/* Define IP_FORWARD to 1 if you wish to have the ability to forward
|
||||
IP packets across network interfaces. If you are going to run lwIP
|
||||
on a device with only one network interface, define this to 0. */
|
||||
#define IP_FORWARD 1
|
||||
|
||||
/* If defined to 1, IP options are allowed (but not parsed). If
|
||||
defined to 0, all packets with IP options are dropped. */
|
||||
#define IP_OPTIONS 1
|
||||
|
||||
/** IP reassembly and segmentation. Even if they both deal with IP
|
||||
* fragments, note that these are orthogonal, one dealing with incoming
|
||||
* packets, the other with outgoing packets
|
||||
*/
|
||||
|
||||
/** Reassemble incoming fragmented IP packets */
|
||||
#define IP_REASSEMBLY 0
|
||||
|
||||
/** Fragment outgoing IP packets if their size exceeds MTU */
|
||||
#define IP_FRAG 1
|
||||
|
||||
/* IP reassemly default age in seconds */
|
||||
#define IP_REASS_MAXAGE 30
|
||||
|
||||
|
||||
/* ---------- ICMP options ---------- */
|
||||
#define ICMP_TTL 255
|
||||
|
||||
|
||||
/* ---------- DHCP options ---------- */
|
||||
/* Define LWIP_DHCP to 1 if you want DHCP configuration of
|
||||
interfaces. DHCP is not implemented in lwIP 0.5.1, however, so
|
||||
turning this on does currently not work. */
|
||||
#define LWIP_DHCP 0
|
||||
|
||||
/* 1 if you want to do an ARP check on the offered address
|
||||
(recommended). */
|
||||
#define DHCP_DOES_ARP_CHECK 1
|
||||
|
||||
/* ---------- UDP options ---------- */
|
||||
#define LWIP_UDP 1
|
||||
#define UDP_TTL 255
|
||||
|
||||
|
||||
/* ---------- Statistics options ---------- */
|
||||
#define STATS
|
||||
|
||||
#ifdef STATS
|
||||
#define LINK_STATS 1
|
||||
#define IP_STATS 1
|
||||
#define ICMP_STATS 1
|
||||
#define UDP_STATS 1
|
||||
#define TCP_STATS 1
|
||||
#define MEM_STATS 1
|
||||
#define MEMP_STATS 1
|
||||
#define PBUF_STATS 1
|
||||
#define SYS_STATS 1
|
||||
#endif /* STATS */
|
||||
|
||||
#endif /* __LWIPOPTS_H__ */
|
722
Demo/ARM9_STR91X_IAR/lwip/include/lwip/opt.h
Normal file
722
Demo/ARM9_STR91X_IAR/lwip/include/lwip/opt.h
Normal file
|
@ -0,0 +1,722 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __LWIP_OPT_H__
|
||||
#define __LWIP_OPT_H__
|
||||
|
||||
/* Include user defined options first */
|
||||
#include "lwipopts.h"
|
||||
#include "lwip/debug.h"
|
||||
|
||||
/* Define default values for unconfigured parameters. */
|
||||
|
||||
/* Platform specific locking */
|
||||
|
||||
/*
|
||||
* enable SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection
|
||||
* for certain critical regions during buffer allocation, deallocation and memory
|
||||
* allocation and deallocation.
|
||||
*/
|
||||
#ifndef SYS_LIGHTWEIGHT_PROT
|
||||
#define SYS_LIGHTWEIGHT_PROT 0
|
||||
#endif
|
||||
|
||||
#ifndef NO_SYS
|
||||
#define NO_SYS 0
|
||||
#endif
|
||||
/* ---------- Memory options ---------- */
|
||||
#ifndef MEM_LIBC_MALLOC
|
||||
#define MEM_LIBC_MALLOC 0
|
||||
#endif
|
||||
|
||||
/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which
|
||||
lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2
|
||||
byte alignment -> define MEM_ALIGNMENT to 2. */
|
||||
|
||||
#ifndef MEM_ALIGNMENT
|
||||
#define MEM_ALIGNMENT 1
|
||||
#endif
|
||||
|
||||
/* MEM_SIZE: the size of the heap memory. If the application will send
|
||||
a lot of data that needs to be copied, this should be set high. */
|
||||
#ifndef MEM_SIZE
|
||||
#define MEM_SIZE 1600
|
||||
#endif
|
||||
|
||||
#ifndef MEMP_SANITY_CHECK
|
||||
#define MEMP_SANITY_CHECK 0
|
||||
#endif
|
||||
|
||||
/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
|
||||
sends a lot of data out of ROM (or other static memory), this
|
||||
should be set high. */
|
||||
#ifndef MEMP_NUM_PBUF
|
||||
#define MEMP_NUM_PBUF 16
|
||||
#endif
|
||||
|
||||
/* Number of raw connection PCBs */
|
||||
#ifndef MEMP_NUM_RAW_PCB
|
||||
#define MEMP_NUM_RAW_PCB 4
|
||||
#endif
|
||||
|
||||
/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
|
||||
per active UDP "connection". */
|
||||
#ifndef MEMP_NUM_UDP_PCB
|
||||
#define MEMP_NUM_UDP_PCB 4
|
||||
#endif
|
||||
/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
|
||||
connections. */
|
||||
#ifndef MEMP_NUM_TCP_PCB
|
||||
#define MEMP_NUM_TCP_PCB 5
|
||||
#endif
|
||||
/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
|
||||
connections. */
|
||||
#ifndef MEMP_NUM_TCP_PCB_LISTEN
|
||||
#define MEMP_NUM_TCP_PCB_LISTEN 8
|
||||
#endif
|
||||
/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
|
||||
segments. */
|
||||
#ifndef MEMP_NUM_TCP_SEG
|
||||
#define MEMP_NUM_TCP_SEG 16
|
||||
#endif
|
||||
/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
|
||||
timeouts. */
|
||||
#ifndef MEMP_NUM_SYS_TIMEOUT
|
||||
#define MEMP_NUM_SYS_TIMEOUT 3
|
||||
#endif
|
||||
|
||||
/* The following four are used only with the sequential API and can be
|
||||
set to 0 if the application only will use the raw API. */
|
||||
/* MEMP_NUM_NETBUF: the number of struct netbufs. */
|
||||
#ifndef MEMP_NUM_NETBUF
|
||||
#define MEMP_NUM_NETBUF 2
|
||||
#endif
|
||||
/* MEMP_NUM_NETCONN: the number of struct netconns. */
|
||||
#ifndef MEMP_NUM_NETCONN
|
||||
#define MEMP_NUM_NETCONN 4
|
||||
#endif
|
||||
/* MEMP_NUM_APIMSG: the number of struct api_msg, used for
|
||||
communication between the TCP/IP stack and the sequential
|
||||
programs. */
|
||||
#ifndef MEMP_NUM_API_MSG
|
||||
#define MEMP_NUM_API_MSG 8
|
||||
#endif
|
||||
/* MEMP_NUM_TCPIPMSG: the number of struct tcpip_msg, which is used
|
||||
for sequential API communication and incoming packets. Used in
|
||||
src/api/tcpip.c. */
|
||||
#ifndef MEMP_NUM_TCPIP_MSG
|
||||
#define MEMP_NUM_TCPIP_MSG 8
|
||||
#endif
|
||||
|
||||
/* ---------- Pbuf options ---------- */
|
||||
/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
|
||||
|
||||
#ifndef PBUF_POOL_SIZE
|
||||
#define PBUF_POOL_SIZE 16
|
||||
#endif
|
||||
|
||||
/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
|
||||
|
||||
#ifndef PBUF_POOL_BUFSIZE
|
||||
#define PBUF_POOL_BUFSIZE 128
|
||||
#endif
|
||||
|
||||
/* PBUF_LINK_HLEN: the number of bytes that should be allocated for a
|
||||
link level header. Defaults to 14 for Ethernet. */
|
||||
|
||||
#ifndef PBUF_LINK_HLEN
|
||||
#define PBUF_LINK_HLEN 14
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* ---------- ARP options ---------- */
|
||||
|
||||
/** Number of active hardware address, IP address pairs cached */
|
||||
#ifndef ARP_TABLE_SIZE
|
||||
#define ARP_TABLE_SIZE 10
|
||||
#endif
|
||||
|
||||
/**
|
||||
* If enabled, outgoing packets are queued during hardware address
|
||||
* resolution.
|
||||
*
|
||||
* This feature has not stabilized yet. Single-packet queueing is
|
||||
* believed to be stable, multi-packet queueing is believed to
|
||||
* clash with the TCP segment queueing.
|
||||
*
|
||||
* As multi-packet-queueing is currently disabled, enabling this
|
||||
* _should_ work, but we need your testing feedback on lwip-users.
|
||||
*
|
||||
*/
|
||||
#ifndef ARP_QUEUEING
|
||||
#define ARP_QUEUEING 1
|
||||
#endif
|
||||
|
||||
/* This option is deprecated */
|
||||
#ifdef ETHARP_QUEUE_FIRST
|
||||
#error ETHARP_QUEUE_FIRST option is deprecated. Remove it from your lwipopts.h.
|
||||
#endif
|
||||
|
||||
/* This option is removed to comply with the ARP standard */
|
||||
#ifdef ETHARP_ALWAYS_INSERT
|
||||
#error ETHARP_ALWAYS_INSERT option is deprecated. Remove it from your lwipopts.h.
|
||||
#endif
|
||||
|
||||
/* ---------- IP options ---------- */
|
||||
/* Define IP_FORWARD to 1 if you wish to have the ability to forward
|
||||
IP packets across network interfaces. If you are going to run lwIP
|
||||
on a device with only one network interface, define this to 0. */
|
||||
#ifndef IP_FORWARD
|
||||
#define IP_FORWARD 0
|
||||
#endif
|
||||
|
||||
/* If defined to 1, IP options are allowed (but not parsed). If
|
||||
defined to 0, all packets with IP options are dropped. */
|
||||
#ifndef IP_OPTIONS
|
||||
#define IP_OPTIONS 1
|
||||
#endif
|
||||
|
||||
/** IP reassembly and segmentation. Even if they both deal with IP
|
||||
* fragments, note that these are orthogonal, one dealing with incoming
|
||||
* packets, the other with outgoing packets
|
||||
*/
|
||||
|
||||
/** Reassemble incoming fragmented IP packets */
|
||||
#ifndef IP_REASSEMBLY
|
||||
#define IP_REASSEMBLY 1
|
||||
#endif
|
||||
|
||||
/** Fragment outgoing IP packets if their size exceeds MTU */
|
||||
#ifndef IP_FRAG
|
||||
#define IP_FRAG 1
|
||||
#endif
|
||||
|
||||
/* IP reassemly default age in seconds */
|
||||
#ifndef IP_REASS_MAXAGE
|
||||
#define IP_REASS_MAXAGE 3
|
||||
#endif
|
||||
|
||||
/* IP reassembly buffer size (minus IP header) */
|
||||
#ifndef IP_REASS_BUFSIZE
|
||||
#define IP_REASS_BUFSIZE 5760
|
||||
#endif
|
||||
|
||||
/* Assumed max MTU on any interface for IP frag buffer */
|
||||
#ifndef IP_FRAG_MAX_MTU
|
||||
#define IP_FRAG_MAX_MTU 1500
|
||||
#endif
|
||||
|
||||
/** Global default value for Time To Live used by transport layers. */
|
||||
#ifndef IP_DEFAULT_TTL
|
||||
#define IP_DEFAULT_TTL 255
|
||||
#endif
|
||||
|
||||
/* ---------- ICMP options ---------- */
|
||||
|
||||
#ifndef ICMP_TTL
|
||||
#define ICMP_TTL (IP_DEFAULT_TTL)
|
||||
#endif
|
||||
|
||||
/* ---------- RAW options ---------- */
|
||||
|
||||
#ifndef LWIP_RAW
|
||||
#define LWIP_RAW 1
|
||||
#endif
|
||||
|
||||
#ifndef RAW_TTL
|
||||
#define RAW_TTL (IP_DEFAULT_TTL)
|
||||
#endif
|
||||
|
||||
/* ---------- DHCP options ---------- */
|
||||
|
||||
#ifndef LWIP_DHCP
|
||||
#define LWIP_DHCP 0
|
||||
#endif
|
||||
|
||||
/* 1 if you want to do an ARP check on the offered address
|
||||
(recommended). */
|
||||
#ifndef DHCP_DOES_ARP_CHECK
|
||||
#define DHCP_DOES_ARP_CHECK 1
|
||||
#endif
|
||||
|
||||
/* ---------- SNMP options ---------- */
|
||||
/** @note UDP must be available for SNMP transport */
|
||||
#ifndef LWIP_SNMP
|
||||
#define LWIP_SNMP 0
|
||||
#endif
|
||||
|
||||
/** @note At least one request buffer is required. */
|
||||
#ifndef SNMP_CONCURRENT_REQUESTS
|
||||
#define SNMP_CONCURRENT_REQUESTS 1
|
||||
#endif
|
||||
|
||||
/** @note At least one trap destination is required */
|
||||
#ifndef SNMP_TRAP_DESTINATIONS
|
||||
#define SNMP_TRAP_DESTINATIONS 1
|
||||
#endif
|
||||
|
||||
#ifndef SNMP_PRIVATE_MIB
|
||||
#define SNMP_PRIVATE_MIB 0
|
||||
#endif
|
||||
|
||||
/* ---------- UDP options ---------- */
|
||||
#ifndef LWIP_UDP
|
||||
#define LWIP_UDP 1
|
||||
#endif
|
||||
|
||||
#ifndef UDP_TTL
|
||||
#define UDP_TTL (IP_DEFAULT_TTL)
|
||||
#endif
|
||||
|
||||
/* ---------- TCP options ---------- */
|
||||
#ifndef LWIP_TCP
|
||||
#define LWIP_TCP 1
|
||||
#endif
|
||||
|
||||
#ifndef TCP_TTL
|
||||
#define TCP_TTL (IP_DEFAULT_TTL)
|
||||
#endif
|
||||
|
||||
#ifndef TCP_WND
|
||||
#define TCP_WND 2048
|
||||
#endif
|
||||
|
||||
#ifndef TCP_MAXRTX
|
||||
#define TCP_MAXRTX 12
|
||||
#endif
|
||||
|
||||
#ifndef TCP_SYNMAXRTX
|
||||
#define TCP_SYNMAXRTX 6
|
||||
#endif
|
||||
|
||||
|
||||
/* Controls if TCP should queue segments that arrive out of
|
||||
order. Define to 0 if your device is low on memory. */
|
||||
#ifndef TCP_QUEUE_OOSEQ
|
||||
#define TCP_QUEUE_OOSEQ 1
|
||||
#endif
|
||||
|
||||
/* TCP Maximum segment size. */
|
||||
#ifndef TCP_MSS
|
||||
#define TCP_MSS 128 /* A *very* conservative default. */
|
||||
#endif
|
||||
|
||||
/* TCP sender buffer space (bytes). */
|
||||
#ifndef TCP_SND_BUF
|
||||
#define TCP_SND_BUF 256
|
||||
#endif
|
||||
|
||||
/* TCP sender buffer space (pbufs). This must be at least = 2 *
|
||||
TCP_SND_BUF/TCP_MSS for things to work. */
|
||||
#ifndef TCP_SND_QUEUELEN
|
||||
#define TCP_SND_QUEUELEN 4 * TCP_SND_BUF/TCP_MSS
|
||||
#endif
|
||||
|
||||
|
||||
/* Maximum number of retransmissions of data segments. */
|
||||
|
||||
/* Maximum number of retransmissions of SYN segments. */
|
||||
|
||||
/* TCP writable space (bytes). This must be less than or equal
|
||||
to TCP_SND_BUF. It is the amount of space which must be
|
||||
available in the tcp snd_buf for select to return writable */
|
||||
#ifndef TCP_SNDLOWAT
|
||||
#define TCP_SNDLOWAT TCP_SND_BUF/2
|
||||
#endif
|
||||
|
||||
/* Support loop interface (127.0.0.1) */
|
||||
#ifndef LWIP_HAVE_LOOPIF
|
||||
#define LWIP_HAVE_LOOPIF 0
|
||||
#endif
|
||||
|
||||
#ifndef LWIP_EVENT_API
|
||||
#define LWIP_EVENT_API 0
|
||||
#define LWIP_CALLBACK_API 1
|
||||
#else
|
||||
#define LWIP_EVENT_API 1
|
||||
#define LWIP_CALLBACK_API 0
|
||||
#endif
|
||||
|
||||
#ifndef LWIP_COMPAT_SOCKETS
|
||||
#define LWIP_COMPAT_SOCKETS 1
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef TCPIP_THREAD_PRIO
|
||||
#define TCPIP_THREAD_PRIO 1
|
||||
#endif
|
||||
|
||||
#ifndef SLIPIF_THREAD_PRIO
|
||||
#define SLIPIF_THREAD_PRIO 1
|
||||
#endif
|
||||
|
||||
#ifndef PPP_THREAD_PRIO
|
||||
#define PPP_THREAD_PRIO 1
|
||||
#endif
|
||||
|
||||
#ifndef DEFAULT_THREAD_PRIO
|
||||
#define DEFAULT_THREAD_PRIO 1
|
||||
#endif
|
||||
|
||||
|
||||
/* ---------- Socket Options ---------- */
|
||||
/* Enable SO_REUSEADDR and SO_REUSEPORT options */
|
||||
#ifdef SO_REUSE
|
||||
/* I removed the lot since this was an ugly hack. It broke the raw-API.
|
||||
It also came with many ugly goto's, Christiaan Simons. */
|
||||
#error "SO_REUSE currently unavailable, this was a hack"
|
||||
#endif
|
||||
|
||||
|
||||
/* ---------- Statistics options ---------- */
|
||||
#ifndef LWIP_STATS
|
||||
#define LWIP_STATS 1
|
||||
#endif
|
||||
|
||||
#if LWIP_STATS
|
||||
|
||||
#ifndef LWIP_STATS_DISPLAY
|
||||
#define LWIP_STATS_DISPLAY 0
|
||||
#endif
|
||||
|
||||
#ifndef LINK_STATS
|
||||
#define LINK_STATS 1
|
||||
#endif
|
||||
|
||||
#ifndef IP_STATS
|
||||
#define IP_STATS 1
|
||||
#endif
|
||||
|
||||
#ifndef IPFRAG_STATS
|
||||
#define IPFRAG_STATS 1
|
||||
#endif
|
||||
|
||||
#ifndef ICMP_STATS
|
||||
#define ICMP_STATS 1
|
||||
#endif
|
||||
|
||||
#ifndef UDP_STATS
|
||||
#define UDP_STATS 1
|
||||
#endif
|
||||
|
||||
#ifndef TCP_STATS
|
||||
#define TCP_STATS 1
|
||||
#endif
|
||||
|
||||
#ifndef MEM_STATS
|
||||
#define MEM_STATS 1
|
||||
#endif
|
||||
|
||||
#ifndef MEMP_STATS
|
||||
#define MEMP_STATS 1
|
||||
#endif
|
||||
|
||||
#ifndef PBUF_STATS
|
||||
#define PBUF_STATS 1
|
||||
#endif
|
||||
|
||||
#ifndef SYS_STATS
|
||||
#define SYS_STATS 1
|
||||
#endif
|
||||
|
||||
#ifndef RAW_STATS
|
||||
#define RAW_STATS 0
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#define LINK_STATS 0
|
||||
#define IP_STATS 0
|
||||
#define IPFRAG_STATS 0
|
||||
#define ICMP_STATS 0
|
||||
#define UDP_STATS 0
|
||||
#define TCP_STATS 0
|
||||
#define MEM_STATS 0
|
||||
#define MEMP_STATS 0
|
||||
#define PBUF_STATS 0
|
||||
#define SYS_STATS 0
|
||||
#define RAW_STATS 0
|
||||
#define LWIP_STATS_DISPLAY 0
|
||||
|
||||
#endif /* LWIP_STATS */
|
||||
|
||||
/* ---------- PPP options ---------- */
|
||||
|
||||
#ifndef PPP_SUPPORT
|
||||
#define PPP_SUPPORT 0 /* Set for PPP */
|
||||
#endif
|
||||
|
||||
#if PPP_SUPPORT
|
||||
|
||||
#define NUM_PPP 1 /* Max PPP sessions. */
|
||||
|
||||
|
||||
|
||||
#ifndef PAP_SUPPORT
|
||||
#define PAP_SUPPORT 0 /* Set for PAP. */
|
||||
#endif
|
||||
|
||||
#ifndef CHAP_SUPPORT
|
||||
#define CHAP_SUPPORT 0 /* Set for CHAP. */
|
||||
#endif
|
||||
|
||||
#define MSCHAP_SUPPORT 0 /* Set for MSCHAP (NOT FUNCTIONAL!) */
|
||||
#define CBCP_SUPPORT 0 /* Set for CBCP (NOT FUNCTIONAL!) */
|
||||
#define CCP_SUPPORT 0 /* Set for CCP (NOT FUNCTIONAL!) */
|
||||
|
||||
#ifndef VJ_SUPPORT
|
||||
#define VJ_SUPPORT 0 /* Set for VJ header compression. */
|
||||
#endif
|
||||
|
||||
#ifndef MD5_SUPPORT
|
||||
#define MD5_SUPPORT 0 /* Set for MD5 (see also CHAP) */
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Timeouts.
|
||||
*/
|
||||
#define FSM_DEFTIMEOUT 6 /* Timeout time in seconds */
|
||||
#define FSM_DEFMAXTERMREQS 2 /* Maximum Terminate-Request transmissions */
|
||||
#define FSM_DEFMAXCONFREQS 10 /* Maximum Configure-Request transmissions */
|
||||
#define FSM_DEFMAXNAKLOOPS 5 /* Maximum number of nak loops */
|
||||
|
||||
#define UPAP_DEFTIMEOUT 6 /* Timeout (seconds) for retransmitting req */
|
||||
#define UPAP_DEFREQTIME 30 /* Time to wait for auth-req from peer */
|
||||
|
||||
#define CHAP_DEFTIMEOUT 6 /* Timeout time in seconds */
|
||||
#define CHAP_DEFTRANSMITS 10 /* max # times to send challenge */
|
||||
|
||||
|
||||
/* Interval in seconds between keepalive echo requests, 0 to disable. */
|
||||
#if 1
|
||||
#define LCP_ECHOINTERVAL 0
|
||||
#else
|
||||
#define LCP_ECHOINTERVAL 10
|
||||
#endif
|
||||
|
||||
/* Number of unanswered echo requests before failure. */
|
||||
#define LCP_MAXECHOFAILS 3
|
||||
|
||||
/* Max Xmit idle time (in jiffies) before resend flag char. */
|
||||
#define PPP_MAXIDLEFLAG 100
|
||||
|
||||
/*
|
||||
* Packet sizes
|
||||
*
|
||||
* Note - lcp shouldn't be allowed to negotiate stuff outside these
|
||||
* limits. See lcp.h in the pppd directory.
|
||||
* (XXX - these constants should simply be shared by lcp.c instead
|
||||
* of living in lcp.h)
|
||||
*/
|
||||
#define PPP_MTU 1500 /* Default MTU (size of Info field) */
|
||||
#if 0
|
||||
#define PPP_MAXMTU 65535 - (PPP_HDRLEN + PPP_FCSLEN)
|
||||
#else
|
||||
#define PPP_MAXMTU 1500 /* Largest MTU we allow */
|
||||
#endif
|
||||
#define PPP_MINMTU 64
|
||||
#define PPP_MRU 1500 /* default MRU = max length of info field */
|
||||
#define PPP_MAXMRU 1500 /* Largest MRU we allow */
|
||||
#define PPP_DEFMRU 296 /* Try for this */
|
||||
#define PPP_MINMRU 128 /* No MRUs below this */
|
||||
|
||||
|
||||
#define MAXNAMELEN 256 /* max length of hostname or name for auth */
|
||||
#define MAXSECRETLEN 256 /* max length of password or secret */
|
||||
|
||||
#endif /* PPP_SUPPORT */
|
||||
|
||||
/* checksum options - set to zero for hardware checksum support */
|
||||
|
||||
#ifndef CHECKSUM_GEN_IP
|
||||
#define CHECKSUM_GEN_IP 1
|
||||
#endif
|
||||
|
||||
#ifndef CHECKSUM_GEN_UDP
|
||||
#define CHECKSUM_GEN_UDP 1
|
||||
#endif
|
||||
|
||||
#ifndef CHECKSUM_GEN_TCP
|
||||
#define CHECKSUM_GEN_TCP 1
|
||||
#endif
|
||||
|
||||
#ifndef CHECKSUM_CHECK_IP
|
||||
#define CHECKSUM_CHECK_IP 1
|
||||
#endif
|
||||
|
||||
#ifndef CHECKSUM_CHECK_UDP
|
||||
#define CHECKSUM_CHECK_UDP 1
|
||||
#endif
|
||||
|
||||
#ifndef CHECKSUM_CHECK_TCP
|
||||
#define CHECKSUM_CHECK_TCP 1
|
||||
#endif
|
||||
|
||||
/* Debugging options all default to off */
|
||||
|
||||
#ifndef DBG_TYPES_ON
|
||||
#define DBG_TYPES_ON 0
|
||||
#endif
|
||||
|
||||
#ifndef ETHARP_DEBUG
|
||||
#define ETHARP_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef NETIF_DEBUG
|
||||
#define NETIF_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef PBUF_DEBUG
|
||||
#define PBUF_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef API_LIB_DEBUG
|
||||
#define API_LIB_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef API_MSG_DEBUG
|
||||
#define API_MSG_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef SOCKETS_DEBUG
|
||||
#define SOCKETS_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef ICMP_DEBUG
|
||||
#define ICMP_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef INET_DEBUG
|
||||
#define INET_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef IP_DEBUG
|
||||
#define IP_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef IP_REASS_DEBUG
|
||||
#define IP_REASS_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef RAW_DEBUG
|
||||
#define RAW_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef MEM_DEBUG
|
||||
#define MEM_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef MEMP_DEBUG
|
||||
#define MEMP_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef SYS_DEBUG
|
||||
#define SYS_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef TCP_DEBUG
|
||||
#define TCP_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef TCP_INPUT_DEBUG
|
||||
#define TCP_INPUT_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef TCP_FR_DEBUG
|
||||
#define TCP_FR_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef TCP_RTO_DEBUG
|
||||
#define TCP_RTO_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef TCP_REXMIT_DEBUG
|
||||
#define TCP_REXMIT_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef TCP_CWND_DEBUG
|
||||
#define TCP_CWND_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef TCP_WND_DEBUG
|
||||
#define TCP_WND_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef TCP_OUTPUT_DEBUG
|
||||
#define TCP_OUTPUT_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef TCP_RST_DEBUG
|
||||
#define TCP_RST_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef TCP_QLEN_DEBUG
|
||||
#define TCP_QLEN_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef UDP_DEBUG
|
||||
#define UDP_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef TCPIP_DEBUG
|
||||
#define TCPIP_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef PPP_DEBUG
|
||||
#define PPP_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef SLIP_DEBUG
|
||||
#define SLIP_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef DHCP_DEBUG
|
||||
#define DHCP_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef SNMP_MSG_DEBUG
|
||||
#define SNMP_MSG_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef SNMP_MIB_DEBUG
|
||||
#define SNMP_MIB_DEBUG DBG_OFF
|
||||
#endif
|
||||
|
||||
#ifndef DBG_MIN_LEVEL
|
||||
#define DBG_MIN_LEVEL DBG_LEVEL_OFF
|
||||
#endif
|
||||
|
||||
#endif /* __LWIP_OPT_H__ */
|
||||
|
||||
|
||||
|
121
Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/BasicWEB.c
Normal file
121
Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/BasicWEB.c
Normal file
|
@ -0,0 +1,121 @@
|
|||
|
||||
/*
|
||||
FreeRTOS.org V4.5.0 - copyright (C) 2003-2006 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
FreeRTOS.org 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 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
FreeRTOS.org 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 FreeRTOS.org; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
A special exception to the GPL can be applied should you wish to distribute
|
||||
a combined work that includes FreeRTOS.org, without being obliged to provide
|
||||
the source code for any proprietary components. See the licensing section
|
||||
of http://www.FreeRTOS.org for full details of how and when the exception
|
||||
can be applied.
|
||||
|
||||
***************************************************************************
|
||||
See http://www.FreeRTOS.org for documentation, latest information, license
|
||||
and contact details. Please ensure to read the configuration and relevant
|
||||
port sections of the online documentation.
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
Implements a simplistic WEB server. Every time a connection is made and
|
||||
data is received a dynamic page that shows the current TCP/IP statistics
|
||||
is generated and returned. The connection is then closed.
|
||||
*/
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* PROTOTYPES */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
|
||||
/* Standard includes. */
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
/* Scheduler includes. */
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "semphr.h"
|
||||
|
||||
/* Demo includes. */
|
||||
#include "BasicWEB.h"
|
||||
|
||||
/* lwIP includes. */
|
||||
#include "lwip/api.h"
|
||||
#include "lwip/tcpip.h"
|
||||
#include "lwip/memp.h"
|
||||
#include "lwip/stats.h"
|
||||
#include "netif/loopif.h"
|
||||
#include "lcd.h"
|
||||
#include "httpd.h"
|
||||
|
||||
#define lwipTCP_STACK_SIZE 600
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* GLOBALS */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
static struct netif EMAC_if;
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
/* FUNCTIONS */
|
||||
/*------------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
void vlwIPInit( void )
|
||||
{
|
||||
/* Initialize lwIP and its interface layer. */
|
||||
sys_init();
|
||||
mem_init();
|
||||
memp_init();
|
||||
pbuf_init();
|
||||
netif_init();
|
||||
ip_init();
|
||||
sys_set_state(( signed portCHAR * ) "lwIP", lwipTCP_STACK_SIZE);
|
||||
tcpip_init( NULL, NULL );
|
||||
sys_set_default_state();
|
||||
}
|
||||
/*------------------------------------------------------------*/
|
||||
|
||||
void vBasicWEBServer( void *pvParameters )
|
||||
{
|
||||
struct ip_addr xIpAddr, xNetMast, xGateway;
|
||||
extern err_t ethernetif_init( struct netif *netif );
|
||||
|
||||
/* Parameters are not used - suppress compiler error. */
|
||||
( void ) pvParameters;
|
||||
|
||||
/* Create and configure the EMAC interface. */
|
||||
IP4_ADDR( &xIpAddr, emacIPADDR0, emacIPADDR1, emacIPADDR2, emacIPADDR3 );
|
||||
IP4_ADDR( &xNetMast, emacNET_MASK0, emacNET_MASK1, emacNET_MASK2, emacNET_MASK3 );
|
||||
IP4_ADDR( &xGateway, emacGATEWAY_ADDR0, emacGATEWAY_ADDR1, emacGATEWAY_ADDR2, emacGATEWAY_ADDR3 );
|
||||
netif_add( &EMAC_if, &xIpAddr, &xNetMast, &xGateway, NULL, ethernetif_init, tcpip_input );
|
||||
|
||||
/* make it the default interface */
|
||||
netif_set_default( &EMAC_if );
|
||||
|
||||
/* bring it up */
|
||||
netif_set_up(&EMAC_if);
|
||||
|
||||
/* Initialize HTTP */
|
||||
httpd_init();
|
||||
|
||||
/* Nothing else to do. No point hanging around. */
|
||||
vTaskDelete( NULL );
|
||||
}
|
||||
|
||||
|
61
Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs.c
Normal file
61
Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs.c
Normal file
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#include "lwip/def.h"
|
||||
#include "fs.h"
|
||||
#include "fsdata.h"
|
||||
#include "fsdata.c"
|
||||
|
||||
// Standard lib include
|
||||
#include <string.h>
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
int
|
||||
fs_open(char *name, struct fs_file *file)
|
||||
{
|
||||
struct httpd_fsdata_file_noconst *f;
|
||||
|
||||
for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
|
||||
f != NULL;
|
||||
f = (struct httpd_fsdata_file_noconst *)f->next) {
|
||||
if (!strcmp(name, (char *)f->name)) {
|
||||
file->data = (char *)f->data;
|
||||
file->len = f->len;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
|
8
Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/404.html
Normal file
8
Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/404.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
<html>
|
||||
<body bgcolor="white">
|
||||
<center>
|
||||
<h1>404 - file not found</h1>
|
||||
<h3>Go <a href="/">here</a> instead.</h3>
|
||||
</center>
|
||||
</body>
|
||||
</html>
|
50
Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/index.html
Normal file
50
Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/index.html
Normal file
|
@ -0,0 +1,50 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>FreeRTOS.org STR9 lwIP WEB server demo</title>
|
||||
</head>
|
||||
<BODY onLoad="window.setTimeout("location.href='index.html'",2000)" bgcolor="#CCCCff">
|
||||
<img src="logo.gif" align="right"><p><br><p><br><p><br>
|
||||
<font face="arial">
|
||||
FreeRTOS.org lwIP WEB server example running on an <a href="http://mcu.st.com/mcu/inchtml.php?fdir=pages&fnam=str9">STR912</a> from STMicroelectronics. Page will refresh every 2 seconds (or there abouts).<p>
|
||||
|
||||
|
||||
<br>
|
||||
FreeRTOS.org<SMALL><SUP>TM</SUP></SMALL> is a portable, open source, <i>mini</i> Real Time Kernel - a free to download and royalty free RTOS
|
||||
that <a href="http://www.freertos.org/a00114.html#gpl">can be used in commercial applications</a>.
|
||||
<p>
|
||||
Ports exist for many different processor architectures and development tools. Each official port includes a pre-configured
|
||||
example application demonstrating the kernel features, expediting learning, and permitting 'out of the box' development.<p>
|
||||
|
||||
<a href="http://sourceforge.net/forum/forum.php?forum_id=382005" target="_blank">Free support</a> is provided by an active user community.
|
||||
<a href="http://www.highintegritysystems.com/openrtos.html" target="_blank">Commercial support</a> along with a
|
||||
<a href="http://www.freertos.org/a00115.html">full development service</a> is also provided.<p>
|
||||
|
||||
<a href="http://www.safertos.com/" target="_blank">SafeRTOS</a><small><sup>TM</sup></small> is a version that has been certified for use
|
||||
in safety critical applications. It is a functionally similar product for which complete
|
||||
<a href="http://www.iec.ch/zone/fsafety/fsafety_entry.htm" target="_blank">IEC 61508</a> compliant development/safety lifecyle documentation is available
|
||||
(conformance certified by TÜV SÜD, including compiler verification evidence).
|
||||
While FreeRTOS.org does not contain the same safety features as SafeRTOS there is still commonality - allowing FreeRTOS.org to benefit directly from the
|
||||
very rigorous SafeRTOS testing and validation activities.
|
||||
<p>
|
||||
|
||||
Here are some reasons why FreeRTOS.org is a good choice for your next application - FreeRTOS.org...
|
||||
|
||||
<ul type="disc">
|
||||
<li>Provides one solution for many different architectures and development tools.</li>
|
||||
<li>Is known to be reliable. Confidence is assured by the activities undertaken by the SafeRTOS sister project.</li>
|
||||
<li>Is undergoing continuous active development.</li>
|
||||
<li>Has a minimal ROM, RAM and processing overhead.</li>
|
||||
<li>Is truly free for use in commercial applications (see license conditions for details).</li>
|
||||
<li>Comes with a porting, platform development, or application development service should it be required.</li>
|
||||
<li>Is well established with a large and ever growing user base.</li>
|
||||
<li>Contains a pre-configured example for each port. No need to figure out how to setup a project - just download and compile!</li>
|
||||
<li>Has an excellent and active free support forum</a>.</li>
|
||||
<li>Has the assurance that commercial support is available should it be required.</li>
|
||||
<li>Provides ample documentation.</li>
|
||||
<li>Is very scalable, simple and easy to use.</li>
|
||||
</ul>
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
||||
|
BIN
Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/logo.gif
Normal file
BIN
Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fs/WS1/logo.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.6 KiB |
953
Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fsdata.c
Normal file
953
Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/fsdata.c
Normal file
|
@ -0,0 +1,953 @@
|
|||
static const unsigned char data_404_html[] = {
|
||||
/* /404.html */
|
||||
0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||
0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0x20, 0x20,
|
||||
0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f,
|
||||
0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65,
|
||||
0x22, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63,
|
||||
0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30,
|
||||
0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e,
|
||||
0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f,
|
||||
0x68, 0x31, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61,
|
||||
0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e,
|
||||
0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69,
|
||||
0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68,
|
||||
0x33, 0x3e, 0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f,
|
||||
0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xd, 0xa, 0x20,
|
||||
0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa,
|
||||
0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0};
|
||||
|
||||
static const unsigned char data_index_html[] = {
|
||||
/* /index.html */
|
||||
0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||
0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
|
||||
0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
|
||||
0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
|
||||
0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20,
|
||||
0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
|
||||
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
|
||||
0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
|
||||
0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
|
||||
0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34,
|
||||
0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64,
|
||||
0x22, 0x3e, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
|
||||
0xd, 0xa, 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e,
|
||||
0xd, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74,
|
||||
0x6c, 0x65, 0x3e, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f,
|
||||
0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x53, 0x54, 0x52, 0x39,
|
||||
0x20, 0x6c, 0x77, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, 0x20,
|
||||
0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x64, 0x65, 0x6d,
|
||||
0x6f, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xd,
|
||||
0xa, 0x20, 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e,
|
||||
0xd, 0xa, 0x20, 0x20, 0x3c, 0x42, 0x4f, 0x44, 0x59, 0x20,
|
||||
0x6f, 0x6e, 0x4c, 0x6f, 0x61, 0x64, 0x3d, 0x22, 0x77, 0x69,
|
||||
0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69,
|
||||
0x6d, 0x65, 0x6f, 0x75, 0x74, 0x28, 0x26, 0x71, 0x75, 0x6f,
|
||||
0x74, 0x3b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
||||
0x2e, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x27, 0x69, 0x6e, 0x64,
|
||||
0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x27, 0x26, 0x71,
|
||||
0x75, 0x6f, 0x74, 0x3b, 0x2c, 0x32, 0x30, 0x30, 0x30, 0x29,
|
||||
0x22, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d,
|
||||
0x22, 0x23, 0x43, 0x43, 0x43, 0x43, 0x66, 0x66, 0x22, 0x3e,
|
||||
0xd, 0xa, 0x9, 0x9, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73,
|
||||
0x72, 0x63, 0x3d, 0x22, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67,
|
||||
0x69, 0x66, 0x22, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d,
|
||||
0x22, 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3e, 0x3c, 0x70,
|
||||
0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x70, 0x3e, 0x3c, 0x62,
|
||||
0x72, 0x3e, 0x3c, 0x70, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xd,
|
||||
0xa, 0x9, 0x9, 0x3c, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x66,
|
||||
0x61, 0x63, 0x65, 0x3d, 0x22, 0x61, 0x72, 0x69, 0x61, 0x6c,
|
||||
0x22, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x46, 0x72, 0x65, 0x65,
|
||||
0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x6c,
|
||||
0x77, 0x49, 0x50, 0x20, 0x57, 0x45, 0x42, 0x20, 0x73, 0x65,
|
||||
0x72, 0x76, 0x65, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6d, 0x70,
|
||||
0x6c, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67,
|
||||
0x20, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x3c, 0x61, 0x20,
|
||||
0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
|
||||
0x3a, 0x2f, 0x2f, 0x6d, 0x63, 0x75, 0x2e, 0x73, 0x74, 0x2e,
|
||||
0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x63, 0x75, 0x2f, 0x69, 0x6e,
|
||||
0x63, 0x68, 0x74, 0x6d, 0x6c, 0x2e, 0x70, 0x68, 0x70, 0x3f,
|
||||
0x66, 0x64, 0x69, 0x72, 0x3d, 0x70, 0x61, 0x67, 0x65, 0x73,
|
||||
0x26, 0x66, 0x6e, 0x61, 0x6d, 0x3d, 0x73, 0x74, 0x72, 0x39,
|
||||
0x22, 0x3e, 0x53, 0x54, 0x52, 0x39, 0x31, 0x32, 0x3c, 0x2f,
|
||||
0x61, 0x3e, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x53, 0x54,
|
||||
0x4d, 0x69, 0x63, 0x72, 0x6f, 0x65, 0x6c, 0x65, 0x63, 0x74,
|
||||
0x72, 0x6f, 0x6e, 0x69, 0x63, 0x73, 0x2e, 0x20, 0x20, 0x50,
|
||||
0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72,
|
||||
0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 0x65, 0x76, 0x65,
|
||||
0x72, 0x79, 0x20, 0x32, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e,
|
||||
0x64, 0x73, 0x20, 0x28, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65,
|
||||
0x72, 0x65, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x73, 0x29,
|
||||
0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x9, 0x9, 0xd, 0xa,
|
||||
0x9, 0x9, 0xd, 0xa, 0x9, 0x9, 0x3c, 0x62, 0x72, 0x3e,
|
||||
0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x46, 0x72, 0x65, 0x65,
|
||||
0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x3c, 0x53,
|
||||
0x4d, 0x41, 0x4c, 0x4c, 0x3e, 0x3c, 0x53, 0x55, 0x50, 0x3e,
|
||||
0x54, 0x4d, 0x3c, 0x2f, 0x53, 0x55, 0x50, 0x3e, 0x3c, 0x2f,
|
||||
0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x3e, 0x20, 0x69, 0x73, 0x20,
|
||||
0x61, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x62, 0x6c, 0x65,
|
||||
0x2c, 0x20, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x73, 0x6f, 0x75,
|
||||
0x72, 0x63, 0x65, 0x2c, 0x20, 0x3c, 0x69, 0x3e, 0x6d, 0x69,
|
||||
0x6e, 0x69, 0x3c, 0x2f, 0x69, 0x3e, 0x20, 0x52, 0x65, 0x61,
|
||||
0x6c, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x4b, 0x65, 0x72,
|
||||
0x6e, 0x65, 0x6c, 0x20, 0x2d, 0x20, 0x61, 0x20, 0x66, 0x72,
|
||||
0x65, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x6f, 0x77, 0x6e,
|
||||
0x6c, 0x6f, 0x61, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72,
|
||||
0x6f, 0x79, 0x61, 0x6c, 0x74, 0x79, 0x20, 0x66, 0x72, 0x65,
|
||||
0x65, 0x20, 0x52, 0x54, 0x4f, 0x53, 0x20, 0xd, 0xa, 0x9,
|
||||
0x9, 0x9, 0x9, 0x74, 0x68, 0x61, 0x74, 0x20, 0x3c, 0x61,
|
||||
0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74,
|
||||
0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66, 0x72,
|
||||
0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72, 0x67,
|
||||
0x2f, 0x61, 0x30, 0x30, 0x31, 0x31, 0x34, 0x2e, 0x68, 0x74,
|
||||
0x6d, 0x6c, 0x23, 0x67, 0x70, 0x6c, 0x22, 0x3e, 0x63, 0x61,
|
||||
0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20,
|
||||
0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x72, 0x63,
|
||||
0x69, 0x61, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
|
||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e,
|
||||
0x2e, 0x20, 0xd, 0xa, 0x9, 0x9, 0x3c, 0x70, 0x3e, 0xd,
|
||||
0xa, 0x9, 0x9, 0x9, 0x9, 0x50, 0x6f, 0x72, 0x74, 0x73,
|
||||
0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72,
|
||||
0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x64, 0x69, 0x66, 0x66,
|
||||
0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x63,
|
||||
0x65, 0x73, 0x73, 0x6f, 0x72, 0x20, 0x61, 0x72, 0x63, 0x68,
|
||||
0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20,
|
||||
0x61, 0x6e, 0x64, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f,
|
||||
0x70, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x6f, 0x6c,
|
||||
0x73, 0x2e, 0x20, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x6f,
|
||||
0x66, 0x66, 0x69, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x70, 0x6f,
|
||||
0x72, 0x74, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65,
|
||||
0x73, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x2d, 0x63, 0x6f,
|
||||
0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0xd, 0xa,
|
||||
0x9, 0x9, 0x9, 0x9, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c,
|
||||
0x65, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x6e, 0x73,
|
||||
0x74, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68,
|
||||
0x65, 0x20, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x66,
|
||||
0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2c, 0x20, 0x65,
|
||||
0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20,
|
||||
0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x2c, 0x20,
|
||||
0x61, 0x6e, 0x64, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x74,
|
||||
0x74, 0x69, 0x6e, 0x67, 0x20, 0x27, 0x6f, 0x75, 0x74, 0x20,
|
||||
0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, 0x78,
|
||||
0x27, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d,
|
||||
0x65, 0x6e, 0x74, 0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd,
|
||||
0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x61, 0x20, 0x68, 0x72,
|
||||
0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
|
||||
0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x66, 0x6f, 0x72,
|
||||
0x67, 0x65, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x66, 0x6f, 0x72,
|
||||
0x75, 0x6d, 0x2f, 0x66, 0x6f, 0x72, 0x75, 0x6d, 0x2e, 0x70,
|
||||
0x68, 0x70, 0x3f, 0x66, 0x6f, 0x72, 0x75, 0x6d, 0x5f, 0x69,
|
||||
0x64, 0x3d, 0x33, 0x38, 0x32, 0x30, 0x30, 0x35, 0x22, 0x20,
|
||||
0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f, 0x62,
|
||||
0x6c, 0x61, 0x6e, 0x6b, 0x22, 0x3e, 0x46, 0x72, 0x65, 0x65,
|
||||
0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x3c, 0x2f,
|
||||
0x61, 0x3e, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x76,
|
||||
0x69, 0x64, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6e,
|
||||
0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x75, 0x73,
|
||||
0x65, 0x72, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69,
|
||||
0x74, 0x79, 0x2e, 0x20, 0x20, 0xd, 0xa, 0x9, 0x9, 0x9,
|
||||
0x9, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||
0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77,
|
||||
0x2e, 0x68, 0x69, 0x67, 0x68, 0x69, 0x6e, 0x74, 0x65, 0x67,
|
||||
0x72, 0x69, 0x74, 0x79, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
|
||||
0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e,
|
||||
0x72, 0x74, 0x6f, 0x73, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22,
|
||||
0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f,
|
||||
0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x22, 0x3e, 0x43, 0x6f, 0x6d,
|
||||
0x6d, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x73, 0x75,
|
||||
0x70, 0x70, 0x6f, 0x72, 0x74, 0x3c, 0x2f, 0x61, 0x3e, 0x20,
|
||||
0x61, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68,
|
||||
0x20, 0x61, 0x20, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c,
|
||||
0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74,
|
||||
0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x66,
|
||||
0x72, 0x65, 0x65, 0x72, 0x74, 0x6f, 0x73, 0x2e, 0x6f, 0x72,
|
||||
0x67, 0x2f, 0x61, 0x30, 0x30, 0x31, 0x31, 0x35, 0x2e, 0x68,
|
||||
0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x66, 0x75, 0x6c, 0x6c, 0x20,
|
||||
0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e,
|
||||
0x74, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3c,
|
||||
0x2f, 0x61, 0x3e, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6c, 0x73,
|
||||
0x6f, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64,
|
||||
0x2e, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x9, 0x9,
|
||||
0x9, 0x9, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d,
|
||||
0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77,
|
||||
0x77, 0x2e, 0x73, 0x61, 0x66, 0x65, 0x72, 0x74, 0x6f, 0x73,
|
||||
0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x22, 0x20, 0x74, 0x61, 0x72,
|
||||
0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f, 0x62, 0x6c, 0x61, 0x6e,
|
||||
0x6b, 0x22, 0x3e, 0x53, 0x61, 0x66, 0x65, 0x52, 0x54, 0x4f,
|
||||
0x53, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x73, 0x6d, 0x61, 0x6c,
|
||||
0x6c, 0x3e, 0x3c, 0x73, 0x75, 0x70, 0x3e, 0x54, 0x4d, 0x3c,
|
||||
0x2f, 0x73, 0x75, 0x70, 0x3e, 0x3c, 0x2f, 0x73, 0x6d, 0x61,
|
||||
0x6c, 0x6c, 0x3e, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x76,
|
||||
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61,
|
||||
0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x62, 0x65, 0x65, 0x6e,
|
||||
0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64,
|
||||
0x20, 0x66, 0x6f, 0x72, 0x20, 0x75, 0x73, 0x65, 0xd, 0xa,
|
||||
0x9, 0x9, 0x9, 0x9, 0x69, 0x6e, 0x20, 0x73, 0x61, 0x66,
|
||||
0x65, 0x74, 0x79, 0x20, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63,
|
||||
0x61, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x20, 0x49, 0x74, 0x20,
|
||||
0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x73, 0x69,
|
||||
0x6d, 0x69, 0x6c, 0x61, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x64,
|
||||
0x75, 0x63, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x68,
|
||||
0x69, 0x63, 0x68, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
|
||||
0x74, 0x65, 0x20, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c,
|
||||
0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74,
|
||||
0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69,
|
||||
0x65, 0x63, 0x2e, 0x63, 0x68, 0x2f, 0x7a, 0x6f, 0x6e, 0x65,
|
||||
0x2f, 0x66, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x2f, 0x66,
|
||||
0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, 0x65, 0x6e, 0x74,
|
||||
0x72, 0x79, 0x2e, 0x68, 0x74, 0x6d, 0x22, 0x20, 0x74, 0x61,
|
||||
0x72, 0x67, 0x65, 0x74, 0x3d, 0x22, 0x5f, 0x62, 0x6c, 0x61,
|
||||
0x6e, 0x6b, 0x22, 0x3e, 0x49, 0x45, 0x43, 0x20, 0x36, 0x31,
|
||||
0x35, 0x30, 0x38, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x63, 0x6f,
|
||||
0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x65,
|
||||
0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2f,
|
||||
0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x20, 0x6c, 0x69, 0x66,
|
||||
0x65, 0x63, 0x79, 0x6c, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75,
|
||||
0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
|
||||
0x69, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62,
|
||||
0x6c, 0x65, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x28, 0x63,
|
||||
0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65,
|
||||
0x20, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x65, 0x64,
|
||||
0x20, 0x62, 0x79, 0x20, 0x54, 0xdc, 0x56, 0x20, 0x53, 0xdc,
|
||||
0x44, 0x2c, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69,
|
||||
0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65,
|
||||
0x72, 0x20, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x76, 0x69, 0x64, 0x65,
|
||||
0x6e, 0x63, 0x65, 0x29, 0x2e, 0x20, 0xd, 0xa, 0x9, 0x9,
|
||||
0x9, 0x9, 0x57, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x46, 0x72,
|
||||
0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67,
|
||||
0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20,
|
||||
0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x74, 0x68,
|
||||
0x65, 0x20, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x73, 0x61, 0x66,
|
||||
0x65, 0x74, 0x79, 0x20, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
|
||||
0x65, 0x73, 0x20, 0x61, 0x73, 0x20, 0x53, 0x61, 0x66, 0x65,
|
||||
0x52, 0x54, 0x4f, 0x53, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65,
|
||||
0x20, 0x69, 0x73, 0x20, 0x73, 0x74, 0x69, 0x6c, 0x6c, 0x20,
|
||||
0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x74,
|
||||
0x79, 0x20, 0x2d, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x69,
|
||||
0x6e, 0x67, 0x20, 0x46, 0x72, 0x65, 0x65, 0x52, 0x54, 0x4f,
|
||||
0x53, 0x2e, 0x6f, 0x72, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x62,
|
||||
0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x20, 0x64, 0x69, 0x72,
|
||||
0x65, 0x63, 0x74, 0x6c, 0x79, 0x20, 0x66, 0x72, 0x6f, 0x6d,
|
||||
0x20, 0x74, 0x68, 0x65, 0x20, 0xd, 0xa, 0x9, 0x9, 0x9,
|
||||
0x9, 0x76, 0x65, 0x72, 0x79, 0x20, 0x72, 0x69, 0x67, 0x6f,
|
||||
0x72, 0x6f, 0x75, 0x73, 0x20, 0x53, 0x61, 0x66, 0x65, 0x52,
|
||||
0x54, 0x4f, 0x53, 0x20, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
|
||||
0x67, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69,
|
||||
0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x63, 0x74,
|
||||
0x69, 0x76, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0xd, 0xa,
|
||||
0x9, 0x9, 0x3c, 0x70, 0x3e, 0xd, 0xa, 0x9, 0x9, 0xd,
|
||||
0xa, 0x9, 0x9, 0x48, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72,
|
||||
0x65, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x72, 0x65, 0x61,
|
||||
0x73, 0x6f, 0x6e, 0x73, 0x20, 0x77, 0x68, 0x79, 0x20, 0x46,
|
||||
0x72, 0x65, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72,
|
||||
0x67, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x67, 0x6f, 0x6f,
|
||||
0x64, 0x20, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x20, 0x66,
|
||||
0x6f, 0x72, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x6e, 0x65,
|
||||
0x78, 0x74, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2d, 0x20, 0x46, 0x72, 0x65,
|
||||
0x65, 0x52, 0x54, 0x4f, 0x53, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
|
||||
0x2e, 0x2e, 0xd, 0xa, 0xd, 0xa, 0x9, 0x9, 0x3c, 0x75,
|
||||
0x6c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x64, 0x69,
|
||||
0x73, 0x63, 0x22, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9,
|
||||
0x3c, 0x6c, 0x69, 0x3e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64,
|
||||
0x65, 0x73, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x73, 0x6f, 0x6c,
|
||||
0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20,
|
||||
0x6d, 0x61, 0x6e, 0x79, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65,
|
||||
0x72, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69,
|
||||
0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x61,
|
||||
0x6e, 0x64, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70,
|
||||
0x6d, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x6f, 0x6c, 0x73,
|
||||
0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa, 0x9, 0x9,
|
||||
0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x49, 0x73, 0x20, 0x6b,
|
||||
0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65,
|
||||
0x20, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x2e,
|
||||
0x20, 0x20, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e,
|
||||
0x63, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x73, 0x73, 0x75,
|
||||
0x72, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65,
|
||||
0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x69, 0x65,
|
||||
0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x74, 0x61, 0x6b,
|
||||
0x65, 0x6e, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20,
|
||||
0x53, 0x61, 0x66, 0x65, 0x52, 0x54, 0x4f, 0x53, 0x20, 0x73,
|
||||
0x69, 0x73, 0x74, 0x65, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x6a,
|
||||
0x65, 0x63, 0x74, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd,
|
||||
0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x49,
|
||||
0x73, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x67, 0x6f, 0x69,
|
||||
0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75,
|
||||
0x6f, 0x75, 0x73, 0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65,
|
||||
0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65,
|
||||
0x6e, 0x74, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa,
|
||||
0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x48, 0x61,
|
||||
0x73, 0x20, 0x61, 0x20, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x61,
|
||||
0x6c, 0x20, 0x52, 0x4f, 0x4d, 0x2c, 0x20, 0x52, 0x41, 0x4d,
|
||||
0x20, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65,
|
||||
0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x76, 0x65, 0x72,
|
||||
0x68, 0x65, 0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e,
|
||||
0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e,
|
||||
0x49, 0x73, 0x20, 0x74, 0x72, 0x75, 0x6c, 0x79, 0x20, 0x66,
|
||||
0x72, 0x65, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x75, 0x73,
|
||||
0x65, 0x20, 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
|
||||
0x72, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x6c,
|
||||
0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x28,
|
||||
0x73, 0x65, 0x65, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73,
|
||||
0x65, 0x20, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f,
|
||||
0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 0x65, 0x74,
|
||||
0x61, 0x69, 0x6c, 0x73, 0x29, 0x2e, 0x3c, 0x2f, 0x6c, 0x69,
|
||||
0x3e, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69,
|
||||
0x3e, 0x43, 0x6f, 0x6d, 0x65, 0x73, 0x20, 0x77, 0x69, 0x74,
|
||||
0x68, 0x20, 0x61, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e,
|
||||
0x67, 0x2c, 0x20, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
|
||||
0x6d, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d,
|
||||
0x65, 0x6e, 0x74, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x61, 0x70,
|
||||
0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20,
|
||||
0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e,
|
||||
0x74, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20,
|
||||
0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x69, 0x74, 0x20,
|
||||
0x62, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
|
||||
0x64, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa, 0x9,
|
||||
0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x49, 0x73, 0x20,
|
||||
0x77, 0x65, 0x6c, 0x6c, 0x20, 0x65, 0x73, 0x74, 0x61, 0x62,
|
||||
0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74,
|
||||
0x68, 0x20, 0x61, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x20,
|
||||
0x61, 0x6e, 0x64, 0x20, 0x65, 0x76, 0x65, 0x72, 0x20, 0x67,
|
||||
0x72, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65,
|
||||
0x72, 0x20, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x3c, 0x2f, 0x6c,
|
||||
0x69, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c,
|
||||
0x69, 0x3e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73,
|
||||
0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x2d, 0x63, 0x6f, 0x6e,
|
||||
0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x65, 0x78,
|
||||
0x61, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20,
|
||||
0x65, 0x61, 0x63, 0x68, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x2e,
|
||||
0x20, 0x20, 0x4e, 0x6f, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x20,
|
||||
0x74, 0x6f, 0x20, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x20,
|
||||
0x6f, 0x75, 0x74, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x74, 0x6f,
|
||||
0x20, 0x73, 0x65, 0x74, 0x75, 0x70, 0x20, 0x61, 0x20, 0x70,
|
||||
0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x2d, 0x20, 0x6a,
|
||||
0x75, 0x73, 0x74, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f,
|
||||
0x61, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x6f, 0x6d,
|
||||
0x70, 0x69, 0x6c, 0x65, 0x21, 0x3c, 0x2f, 0x6c, 0x69, 0x3e,
|
||||
0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e,
|
||||
0x48, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x63,
|
||||
0x65, 0x6c, 0x6c, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x6e, 0x64,
|
||||
0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 0x72,
|
||||
0x65, 0x65, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74,
|
||||
0x20, 0x66, 0x6f, 0x72, 0x75, 0x6d, 0x3c, 0x2f, 0x61, 0x3e,
|
||||
0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa, 0x9, 0x9,
|
||||
0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x48, 0x61, 0x73, 0x20,
|
||||
0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x73, 0x75, 0x72, 0x61,
|
||||
0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63,
|
||||
0x6f, 0x6d, 0x6d, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6c, 0x20,
|
||||
0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x69, 0x73,
|
||||
0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65,
|
||||
0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x69, 0x74,
|
||||
0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72,
|
||||
0x65, 0x64, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa,
|
||||
0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c, 0x69, 0x3e, 0x50, 0x72,
|
||||
0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, 0x20, 0x61, 0x6d, 0x70,
|
||||
0x6c, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e,
|
||||
0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x3c, 0x2f, 0x6c,
|
||||
0x69, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x9, 0x9, 0x3c, 0x6c,
|
||||
0x69, 0x3e, 0x49, 0x73, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20,
|
||||
0x73, 0x63, 0x61, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2c, 0x20,
|
||||
0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x61, 0x6e, 0x64,
|
||||
0x20, 0x65, 0x61, 0x73, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x75,
|
||||
0x73, 0x65, 0x2e, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0xd, 0xa,
|
||||
0x9, 0x9, 0x3c, 0x2f, 0x75, 0x6c, 0x3e, 0xd, 0xa, 0x9,
|
||||
0x9, 0x3c, 0x2f, 0x66, 0x6f, 0x6e, 0x74, 0x3e, 0xd, 0xa,
|
||||
0x9, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa,
|
||||
0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd,
|
||||
0xa, 0};
|
||||
|
||||
static const unsigned char data_logo_gif[] = {
|
||||
/* /logo.gif */
|
||||
0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0,
|
||||
0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 00, 0x1, 0x5d, 00,
|
||||
0xf7, 00, 00, 00, 00, 00, 0x4, 0x4, 0x4, 0x8,
|
||||
0x8, 0x8, 0xc, 0xc, 0xc, 0x10, 0x10, 0x10, 0x14, 0x14,
|
||||
0x14, 0x18, 0x18, 0x18, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x24,
|
||||
0x20, 0x20, 0x20, 0x24, 0x24, 0x24, 0x28, 0x28, 0x28, 0x2c,
|
||||
0x2c, 0x2c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x34, 0x34,
|
||||
0x34, 0x38, 0x38, 0x38, 0x3c, 0x3c, 0x3c, 0x40, 0x40, 0x40,
|
||||
0x40, 0x40, 0x50, 0x44, 0x44, 0x44, 0x48, 0x48, 0x48, 0x4c,
|
||||
0x4c, 0x4c, 0x4c, 0x4c, 0x61, 0x50, 0x50, 0x50, 0x55, 0x55,
|
||||
0x55, 0x59, 0x59, 0x59, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x75,
|
||||
0x61, 0x61, 0x61, 0x65, 0x65, 0x65, 0x69, 0x69, 0x69, 0x69,
|
||||
0x69, 0x85, 0x6d, 0x6d, 0x6d, 0x71, 0x71, 0x71, 0x75, 0x75,
|
||||
0x75, 0x75, 0x75, 0x95, 0x79, 0x79, 0x79, 0x7d, 0x7d, 0x7d,
|
||||
00, 0xd6, 00, 00, 0xda, 00, 0x81, 0x81, 0x81, 0x4,
|
||||
0xda, 0x4, 00, 0xde, 00, 0xc, 0xd6, 0x10, 0x8, 0xda,
|
||||
0x8, 0x4, 0xde, 0x4, 0x81, 0x81, 0xa1, 0x85, 0x85, 0x85,
|
||||
0x10, 0xd6, 0x14, 00, 0xe2, 00, 0xc, 0xda, 0xc, 0x8,
|
||||
0xde, 0x8, 0x4, 0xe2, 0x4, 0x10, 0xda, 0x10, 0x8, 0xe2,
|
||||
0x8, 0x14, 0xda, 0x14, 0x89, 0x89, 0x89, 0xc, 0xe2, 0xc,
|
||||
0x14, 0xde, 0x14, 0x10, 0xe2, 0x10, 0xc, 0xe6, 0xc, 0x18,
|
||||
0xde, 0x18, 0x8d, 0x8d, 0x8d, 0x20, 0xda, 0x24, 0x10, 0xe6,
|
||||
0x10, 0x18, 0xe2, 0x18, 0x14, 0xe6, 0x14, 0x28, 0xd6, 0x34,
|
||||
0x20, 0xde, 0x20, 0x8d, 0x8d, 0xb2, 0x91, 0x91, 0x91, 0x24,
|
||||
0xde, 0x24, 0x20, 0xe2, 0x20, 0x28, 0xde, 0x28, 0x30, 0xda,
|
||||
0x34, 0x2c, 0xde, 0x2c, 0x95, 0x95, 0x95, 0x1c, 0xea, 0x1c,
|
||||
0x20, 0xea, 0x20, 0x2c, 0xe2, 0x2c, 0x28, 0xe6, 0x28, 0x34,
|
||||
0xde, 0x34, 0x24, 0xea, 0x24, 0x99, 0x99, 0x99, 0x28, 0xea,
|
||||
0x28, 0x34, 0xe2, 0x34, 0x2c, 0xea, 0x2c, 0x38, 0xe2, 0x38,
|
||||
0x99, 0x99, 0xbe, 0x9d, 0x9d, 0x9d, 0x2c, 0xee, 0x2c, 0x40,
|
||||
0xe2, 0x40, 0x44, 0xde, 0x4c, 0x30, 0xee, 0x30, 0xa1, 0xa1,
|
||||
0xa1, 0x44, 0xe2, 0x44, 0x38, 0xee, 0x38, 0x50, 0xde, 0x5d,
|
||||
0xa5, 0xa5, 0xa5, 0x4c, 0xe2, 0x55, 0xa1, 0xa1, 0xce, 0x50,
|
||||
0xe2, 0x55, 0x4c, 0xe6, 0x4c, 0x50, 0xe6, 0x50, 0x40, 0xf2,
|
||||
0x40, 0xaa, 0xaa, 0xaa, 0x59, 0xe2, 0x5d, 0x61, 0xde, 0x6d,
|
||||
0x65, 0xde, 0x6d, 0xae, 0xae, 0xae, 0x5d, 0xe6, 0x5d, 0x4c,
|
||||
0xf2, 0x4c, 0x65, 0xe2, 0x6d, 0x50, 0xf2, 0x50, 0xb2, 0xb2,
|
||||
0xb2, 0x55, 0xf2, 0x55, 0xae, 0xae, 0xda, 0x59, 0xf2, 0x59,
|
||||
0x69, 0xea, 0x69, 0xb6, 0xb6, 0xb6, 0x6d, 0xea, 0x6d, 0x71,
|
||||
0xea, 0x71, 0xba, 0xba, 0xba, 0x79, 0xea, 0x79, 0x5d, 0xff,
|
||||
0x5d, 0x7d, 0xea, 0x7d, 0xbe, 0xbe, 0xbe, 0x61, 0xff, 0x61,
|
||||
0x79, 0xee, 0x79, 0x65, 0xff, 0x65, 0x7d, 0xee, 0x7d, 0x99,
|
||||
0xd6, 0xba, 0x69, 0xff, 0x69, 0x81, 0xee, 0x81, 0xc2, 0xc2,
|
||||
0xc2, 0x71, 0xfa, 0x71, 0x89, 0xea, 0x89, 0x6d, 0xff, 0x6d,
|
||||
0x85, 0xee, 0x85, 0x89, 0xea, 0x91, 0x71, 0xff, 0x71, 0x89,
|
||||
0xee, 0x89, 0xc6, 0xc6, 0xc6, 0x75, 0xff, 0x75, 0x8d, 0xee,
|
||||
0x8d, 0x7d, 0xfa, 0x7d, 0xc2, 0xc2, 0xf2, 0x79, 0xff, 0x79,
|
||||
0x91, 0xee, 0x91, 0x95, 0xea, 0xa1, 0x7d, 0xff, 0x7d, 0x95,
|
||||
0xee, 0x95, 0xca, 0xca, 0xca, 0x99, 0xea, 0xa1, 0x85, 0xfa,
|
||||
0x85, 0x81, 0xff, 0x81, 0xae, 0xda, 0xce, 0x99, 0xee, 0x99,
|
||||
0x95, 0xf2, 0x95, 0x85, 0xff, 0x85, 0xb6, 0xd6, 0xda, 0xa1,
|
||||
0xea, 0xaa, 0x99, 0xf2, 0x99, 0xce, 0xce, 0xce, 0xc2, 0xce,
|
||||
0xf2, 0x89, 0xff, 0x89, 0xbe, 0xd2, 0xea, 0x8d, 0xff, 0x8d,
|
||||
0xaa, 0xea, 0xb2, 0xaa, 0xea, 0xb6, 0xa1, 0xf2, 0xa1, 0xca,
|
||||
0xce, 0xfa, 0x91, 0xff, 0x91, 0xd2, 0xd2, 0xd2, 0xa5, 0xf2,
|
||||
0xa5, 0xaa, 0xee, 0xb2, 0xcc, 0xcc, 0xff, 0x95, 0xff, 0x95,
|
||||
0xc6, 0xd6, 0xea, 0xca, 0xd2, 0xf6, 0xaa, 0xf2, 0xaa, 0x99,
|
||||
0xff, 0x99, 0xca, 0xd6, 0xee, 0xd6, 0xd6, 0xd6, 0xc2, 0xde,
|
||||
0xe2, 0x9d, 0xff, 0x9d, 0xd2, 0xd2, 0xff, 0xce, 0xd6, 0xf6,
|
||||
0xa1, 0xff, 0xa1, 0xba, 0xee, 0xc2, 0xa5, 0xff, 0xa5, 0xda,
|
||||
0xda, 0xda, 0xaa, 0xff, 0xaa, 0xb6, 0xf6, 0xb6, 0xae, 0xff,
|
||||
0xae, 0xde, 0xde, 0xde, 0xb2, 0xff, 0xb2, 0xbe, 0xf6, 0xbe,
|
||||
0xb6, 0xff, 0xb6, 0xca, 0xee, 0xd6, 0xc2, 0xf6, 0xc2, 0xe2,
|
||||
0xe2, 0xe2, 0xba, 0xff, 0xba, 0xce, 0xee, 0xde, 0xbe, 0xff,
|
||||
0xbe, 0xca, 0xf6, 0xca, 0xce, 0xf2, 0xda, 0xc2, 0xff, 0xc2,
|
||||
0xce, 0xf6, 0xce, 0xd2, 0xf2, 0xda, 0xe6, 0xe6, 0xe6, 0xc6,
|
||||
0xff, 0xc6, 0xca, 0xff, 0xca, 0xea, 0xea, 0xea, 0xce, 0xff,
|
||||
0xce, 0xd2, 0xff, 0xd2, 0xd6, 0xff, 0xd6, 0xee, 0xee, 0xee,
|
||||
0xde, 0xfa, 0xde, 0xda, 0xff, 0xda, 0xde, 0xff, 0xde, 0xe6,
|
||||
0xfa, 0xe6, 0xf2, 0xf2, 0xf2, 0xe2, 0xff, 0xe2, 0xe6, 0xff,
|
||||
0xe6, 0xee, 0xfa, 0xee, 0xea, 0xff, 0xea, 0xf6, 0xf6, 0xf6,
|
||||
0xee, 0xff, 0xee, 0xf2, 0xff, 0xf2, 0xfa, 0xfa, 0xfa, 0xf6,
|
||||
0xff, 0xf6, 0xfa, 0xff, 0xfa, 0xff, 0xff, 0xff, 00, 00,
|
||||
00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
|
||||
00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
|
||||
00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
|
||||
00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
|
||||
00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
|
||||
00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
|
||||
00, 0x21, 0xf9, 0x4, 0x1, 00, 00, 0xb1, 00, 0x2c,
|
||||
00, 00, 00, 00, 00, 0x1, 0x5d, 00, 00, 0x8,
|
||||
0xff, 00, 0x63, 0x9, 0x1c, 0x48, 0xb0, 0xa0, 0xc1, 0x83,
|
||||
0x8, 0x13, 0x2a, 0x5c, 0xc8, 0xb0, 0xa1, 0xc3, 0x87, 0x10,
|
||||
0x23, 0x4a, 0x9c, 0x48, 0xb1, 0xa2, 0xc5, 0x82, 0xbc, 0x42,
|
||||
0x79, 0x82, 0x53, 0x43, 0x46, 0x8d, 0x8f, 0x20, 0x43, 0x8a,
|
||||
0x1c, 0x49, 0xb2, 0xa4, 0xc9, 0x93, 0x28, 0x53, 0xaa, 0x5c,
|
||||
0xc9, 0xb2, 0xa5, 0xcb, 0x97, 0x30, 0x63, 0xa2, 0x94, 0x21,
|
||||
0x43, 0xe, 0xa1, 0x59, 0x17, 0x6f, 0x39, 0x4a, 0x83, 0x2,
|
||||
0x85, 0x8a, 0x9f, 0x40, 0x83, 0xa, 0x1d, 0x4a, 0xb4, 0xa8,
|
||||
0xd1, 0xa3, 0x48, 0x93, 0x2a, 0x5d, 0xca, 0xb4, 0xa9, 0xd3,
|
||||
0xa7, 0x50, 0xa3, 0x32, 0x45, 0x31, 0x4, 0x51, 0x2e, 0x8b,
|
||||
0x89, 0x74, 0x9c, 0xf0, 0xa9, 0x2, 0xc5, 0x89, 0xaf, 0x60,
|
||||
0xc3, 0x8a, 0x1d, 0x4b, 0xb6, 0xac, 0xd9, 0xb3, 0x68, 0xd3,
|
||||
0xaa, 0x5d, 0xcb, 0xb6, 0xad, 0xdb, 0xb7, 0x70, 0xe3, 0xa2,
|
||||
0xe5, 0xda, 0x53, 0x12, 0x2d, 0x8a, 0xa1, 0x94, 0xb8, 0xf0,
|
||||
0xe9, 0x15, 0xc5, 0xc, 0x1b, 0x80, 0x3, 0xb, 0x1e, 0x4c,
|
||||
0xb8, 0xb0, 0xe1, 0xc3, 0x88, 0x13, 0x2b, 0x5e, 0xcc, 0xb8,
|
||||
0xb1, 0xe3, 0xc7, 0x90, 0x23, 0x4b, 0x6, 0x8c, 0xa3, 0xb2,
|
||||
0x65, 0x1c, 0x33, 0x7a, 0xfe, 0x44, 0x21, 0xa4, 0x53, 0xac,
|
||||
0x32, 0xa0, 0x43, 0x97, 0x99, 0xf4, 0xb9, 0x4e, 0xc1, 0xd1,
|
||||
0xb1, 0xd6, 0xd0, 0xe0, 0xaa, 0x2, 0x87, 0x95, 0x3b, 0x83,
|
||||
0x2, 0xc9, 0x9e, 0x4d, 0xbb, 0xb6, 0xed, 0xdb, 0xb8, 0x73,
|
||||
0xeb, 0xde, 0xcd, 0xbb, 0xb7, 0xef, 0xdf, 0xc0, 0x83, 0xb,
|
||||
0x1f, 0x4e, 0xdc, 0x10, 0xa6, 0x51, 0x9f, 0x92, 0x7f, 0x1a,
|
||||
0xc5, 0x87, 0x49, 0xd7, 0xae, 0x28, 0x36, 0xc5, 0x9a, 0xe0,
|
||||
0xc0, 0x1, 0x80, 0xea, 0xe, 0x48, 0x94, 0x1, 0x80, 0x80,
|
||||
0xe0, 0xb, 00, 0x20, 0x62, 0xb1, 0xff, 0x58, 0xf1, 0xdc,
|
||||
0x4a, 0x24, 0x63, 0xde, 0xcc, 0xa9, 0x5f, 0xcf, 0xbe, 0xbd,
|
||||
0xfb, 0xf7, 0xf0, 0xe3, 0xcb, 0x9f, 0x4f, 0xbf, 0xbe, 0xfd,
|
||||
0xfb, 0xf8, 0xf3, 0xeb, 0xdf, 0xcf, 0xdf, 0x1c, 0x3a, 0x75,
|
||||
00, 0x6, 0xa8, 0x8e, 0x39, 0xab, 0x60, 0x1, 0x1d, 0xa,
|
||||
0x49, 0x10, 0x84, 0x40, 0x19, 0x3, 0x6d, 0x87, 0x80, 0x69,
|
||||
0x2, 0x4d, 0x30, 0x41, 0x78, 0x31, 0xb8, 0xd0, 0xd5, 0xc,
|
||||
0x83, 0x98, 0x23, 0xe0, 0x86, 0x1c, 0x76, 0xe8, 0xe1, 0x87,
|
||||
0x20, 0x86, 0x28, 0xe2, 0x88, 0x24, 0x96, 0x68, 0xe2, 0x89,
|
||||
0x28, 0xa6, 0xa8, 0x22, 0x8a, 0xe8, 0x44, 0x82, 0xc3, 0x9,
|
||||
0x3f, 0xad, 0xa0, 0x20, 0x83, 0x2, 0x95, 0x81, 0xc0, 0x5,
|
||||
0x1c, 0xc, 0x84, 00, 0x7, 0x14, 0xee, 0x85, 0x42, 0x11,
|
||||
0xaf, 0xac, 0x28, 0xe4, 0x90, 0x44, 0x16, 0x69, 0xe4, 0x91,
|
||||
0x48, 0x22, 0x29, 0xc, 0x14, 0x9a, 0xb9, 0x30, 0x63, 0x83,
|
||||
0x8, 0x18, 0xd1, 0x5d, 0x2c, 0x2f, 0x5c, 00, 0x42, 0x8f,
|
||||
0x3d, 0x29, 0x51, 0x4b, 0x92, 0x5c, 0x76, 0xe9, 0xe5, 0x97,
|
||||
0x60, 0x86, 0x69, 0xc, 0x16, 0x4d, 0x3e, 0x59, 0x63, 0x77,
|
||||
0xf, 0x4e, 0x97, 0xc5, 0x95, 0xb1, 0x54, 0xd8, 0x13, 0x12,
|
||||
0x5b, 0x86, 0x29, 0xe7, 0x9c, 0x74, 0xd6, 0x49, 0xe7, 0x98,
|
||||
0x65, 0xea, 0x48, 0xe3, 0x67, 0xdd, 0xe1, 0x18, 0x4b, 0x77,
|
||||
0x6c, 0xba, 0x89, 0x2, 0x9c, 0x76, 0x16, 0x6a, 0xe8, 0xa1,
|
||||
0x88, 0x92, 0x88, 0xa7, 0x4f, 0x4e, 0xea, 0x9, 0x65, 0x2c,
|
||||
0x59, 0x20, 0xf0, 0x42, 0x8e, 0x81, 0xfa, 0x48, 0x68, 0xa2,
|
||||
0x98, 0x66, 0xaa, 0xe9, 0x9c, 0x8b, 0xaa, 0xd0, 0xa8, 0x40,
|
||||
0xb, 0x3e, 0xfa, 0x67, 0x9a, 0x95, 0xbe, 0x19, 0x27, 0x8a,
|
||||
0xe7, 0x7c, 0x33, 0xd, 0x31, 0xae, 0xec, 0x61, 0x8d, 0x88,
|
||||
0xe9, 0xc4, 0xff, 0x2a, 0xeb, 0xac, 0xb4, 0xd6, 0x2a, 0xab,
|
||||
0x3a, 0xe9, 0xa0, 0x98, 0xe, 0x3a, 0xb6, 0xf6, 0xea, 0xeb,
|
||||
0xaf, 0xb7, 0x9e, 0x18, 0x2b, 0x3a, 0xe3, 0x70, 0x83, 0xcd,
|
||||
0x35, 0xd8, 0x54, 0x83, 0x2c, 0x36, 0xd9, 0x84, 0xe3, 0x5f,
|
||||
0xae, 0x5f, 0xee, 0x4a, 0x6c, 0x36, 0xd8, 0x54, 0x4b, 0xcd,
|
||||
0xb2, 0xd8, 0x70, 0xe3, 0x2c, 0xaf, 0xd0, 0x8a, 0xd8, 0xe9,
|
||||
0xa7, 0x7f, 0xee, 0x69, 0xa3, 0x40, 0x1c, 0x38, 0x20, 0x50,
|
||||
0xa9, 0x83, 0x9e, 0x5a, 0xe2, 0x39, 0xc0, 0x7c, 0x51, 0xc2,
|
||||
0x7, 0x1b, 0x58, 0x10, 0xc1, 0x23, 0xea, 0x90, 0xa3, 0xcd,
|
||||
0xbd, 0xe7, 0x8, 0x98, 0xe, 0x37, 0xc7, 0x14, 0xe3, 0xef,
|
||||
0xbf, 00, 0x7, 0x2c, 0xb0, 0xbf, 0xd0, 0x54, 0x53, 0xcd,
|
||||
0xb6, 0xdd, 0x82, 0xd8, 0xcd, 0x32, 0x3, 0x37, 0xec, 0xf0,
|
||||
0xc3, 0xc5, 0x2c, 0xc3, 0x4d, 0xc2, 0x20, 0xee, 0xda, 0x4d,
|
||||
0x33, 0xc5, 0x4, 0xa3, 0xb, 0x2a, 0x97, 0x50, 0x42, 0x89,
|
||||
0x22, 0x1e, 0x53, 0x62, 0x8a, 0x2d, 0xbf, 0x44, 0x8c, 0x4d,
|
||||
0x39, 0xff, 0x19, 0xb9, 0xeb, 0x38, 0xd5, 0x64, 0xfc, 0x8b,
|
||||
0x2c, 0x9c, 0x84, 0xdc, 0x48, 0xc8, 0x97, 0xb4, 0xa2, 0x4b,
|
||||
0xc9, 0xc5, 0x50, 0x3, 0x8e, 0x39, 0x14, 0x73, 0xf8, 0x2d,
|
||||
0x45, 0x82, 0x5e, 0x5a, 0x22, 0x39, 0x73, 0x6c, 0x90, 00,
|
||||
00, 0x48, 0x3, 0x60, 0xc0, 0x21, 0xe4, 0xe0, 0x11, 0xc2,
|
||||
0x7, 0x22, 0x90, 0x22, 0x20, 0x3a, 0xc3, 0x8, 0xd2, 0x7,
|
||||
0x20, 0x58, 0x67, 0xad, 0xf5, 0xd6, 0x5c, 0x3, 0x2, 0xf2,
|
||||
0x25, 0xb2, 0xfc, 0x12, 0xc, 0x35, 0xe5, 0xf4, 0xbc, 0xe1,
|
||||
0x32, 0x90, 0x74, 0xad, 0xf6, 0xda, 0x6c, 0x3, 0xd2, 0xc8,
|
||||
0x31, 0x66, 0x6f, 0x88, 0x4e, 0x38, 0xcd, 0xfc, 0x82, 0x4a,
|
||||
0x23, 0x5a, 0xb, 0xa2, 0xf7, 0xde, 0x82, 0x68, 0xff, 0xad,
|
||||
0x8, 0x27, 0xb6, 0x4, 0x83, 0x8d, 0x86, 0x42, 0xa6, 0x63,
|
||||
0xe, 0x35, 0xc1, 0xd8, 0x92, 0x76, 0xd6, 0x7c, 0x37, 0xbe,
|
||||
0x35, 0x24, 0xb2, 0x4, 0x93, 0x4d, 0xdc, 00, 0xfe, 0x3c,
|
||||
0x51, 0xd0, 0xea, 0x8a, 0x78, 0x8e, 0x1a, 0xd, 0x24, 0x9d,
|
||||
0xf4, 0x1, 0x4c, 0x1f, 0x11, 00, 0xd2, 0x3f, 0x90, 0x13,
|
||||
0x20, 0x3a, 0xc5, 0x14, 0x2, 0x48, 0xe3, 0xac, 0xb7, 0xde,
|
||||
0x7a, 0xd6, 0x94, 0xc8, 0xd2, 0xcc, 0x38, 0x20, 0x2e, 0x43,
|
||||
0x89, 0xeb, 0xb8, 0xe7, 0xee, 0x7a, 0x23, 0xcb, 0x50, 0x8e,
|
||||
0x6b, 0x38, 0xc5, 0xc8, 0x82, 0xf7, 0xea, 0xba, 0xb3, 0xee,
|
||||
0x35, 0x27, 0xbf, 0xc, 0xae, 0xe2, 0x38, 0xcd, 0xe8, 0x72,
|
||||
0x49, 0xdf, 0xc5, 0xbb, 0xee, 0x35, 0x34, 0xbe, 0x5b, 0x2e,
|
||||
0x11, 0xe6, 0x26, 0xba, 0x2, 0x81, 0xe7, 0x9f, 0x1f, 0xa2,
|
||||
0xce, 0x1e, 0xb, 0x20, 0xad, 0x1, 0x31, 0xa7, 0xa7, 0x1e,
|
||||
0xfd, 0xf9, 0x7a, 0x63, 0xd, 0x49, 0x2b, 0xd8, 0x7c, 0x68,
|
||||
0x3b, 0xfa, 0xf0, 0xf3, 0xd, 0x49, 0xef, 0x1f, 0xa2, 0x3,
|
||||
0x8d, 0xf0, 0xc4, 0xc7, 0xdf, 0xf8, 0xdf, 0xbf, 0x74, 0x23,
|
||||
0x2c, 0x36, 0x8a, 0xc3, 0x9a, 0xfe, 0x1a, 0x7, 0x89, 0xf6,
|
||||
0x81, 0xc8, 0x7a, 0x11, 0xc1, 0x1e, 0x89, 0xbe, 0xf1, 0x3,
|
||||
0x1, 0x20, 0x4d, 00, 0xa, 0x50, 0x80, 0x3, 0x41, 0xa7,
|
||||
0xe, 0x62, 0x6c, 0x60, 0x74, 0xa, 0xc8, 0x44, 0xf9, 0xa,
|
||||
0x31, 0xc0, 0xf3, 0x5d, 0x82, 0x1a, 0x66, 0x7b, 0x5f, 0x7,
|
||||
0xcf, 0x37, 0xbf, 0xb8, 0x99, 0xe3, 0x18, 0x90, 0x18, 0xe1,
|
||||
0xeb, 0x14, 0x81, 0x8a, 0x6b, 0x94, 0x28, 0x1d, 0xd0, 0xe0,
|
||||
0x84, 0xa, 0x9, 0x98, 0x8d, 0x10, 0x21, 0x10, 0x22, 0xa,
|
||||
0x1c, 0x11, 0x30, 0x3a, 0x7, 0x80, 0x2, 0x74, 0xe0, 0xf,
|
||||
0x6e, 0x38, 0xda, 0xd2, 0xff, 0xd4, 0x61, 0xd, 0x11, 0x38,
|
||||
0x70, 00, 0xde, 0x3, 0x10, 0xea, 0x38, 0x38, 0x43, 0xdc,
|
||||
0xb9, 0x8d, 0x1a, 0x1d, 0x12, 0x61, 0x13, 0x71, 0x57, 0xc2,
|
||||
0xe, 0x8d, 0xe3, 0x17, 0x8d, 0x98, 0x62, 0xeb, 0x3e, 0x48,
|
||||
0x22, 0x6a, 0x50, 0x22, 0x7f, 0x4d, 0xbc, 0x44, 0x38, 0x6c,
|
||||
0x48, 0x26, 0x46, 0x1, 0xcd, 0x52, 0x99, 0x3, 0x91, 0x2b,
|
||||
0x8, 00, 0x80, 00, 0x6c, 0x80, 0x7c, 0x99, 0x8, 0xdf,
|
||||
0x10, 0xc9, 0x91, 0x82, 0x23, 0x26, 0x51, 0x1d, 0x4b, 0xd4,
|
||||
0xa2, 0xf4, 0x1a, 0x1, 0xe, 0xe, 0x49, 0x51, 0x8f, 0x4,
|
||||
0xa4, 0xdf, 0x86, 0xc6, 0xd1, 0xb, 0xd5, 0x1, 0x92, 0x6f,
|
||||
0xd3, 0x13, 0x51, 0x36, 0xbe, 0x8, 0xc8, 0x4b, 0xd0, 0xee,
|
||||
0x80, 0x65, 0xf4, 0xd4, 0x19, 0x4d, 0x55, 0x22, 0x52, 0xb0,
|
||||
0x31, 00, 0x25, 0xc8, 0xd7, 0x23, 0x14, 0xa0, 0x34, 0xef,
|
||||
0x15, 0xd1, 0x8e, 0x1b, 0x3c, 0x64, 0xeb, 0x64, 0x41, 0xb1,
|
||||
0x3f, 0x8a, 0x52, 0x10, 0x55, 0x14, 0x90, 0x39, 0x7e, 0xc1,
|
||||
0x44, 0xf4, 0x9, 0xd0, 0x95, 0x8a, 0x70, 0xe1, 0x87, 0xc2,
|
||||
0x71, 0x9, 0x30, 0x9e, 0xef, 0x95, 0xad, 0xe3, 0xc4, 0x23,
|
||||
0x3f, 0x74, 0xc3, 0x87, 0xe4, 0x50, 0x44, 0x96, 0x6c, 0xa3,
|
||||
0x9, 0x34, 0xc9, 0xc9, 0x21, 0xe2, 0x22, 0x3, 0xa3, 0x13,
|
||||
0xc0, 0x1d, 0xf3, 0x58, 0xbc, 0x42, 0x38, 0xd3, 0x99, 0xfa,
|
||||
0x83, 0xc4, 0x2e, 0x1, 0xf4, 0xbe, 0xb5, 0xb9, 0x72, 0x6d,
|
||||
0x6f, 0x2b, 0xa5, 0x21, 0xcf, 0xe7, 0xcc, 0x46, 0x40, 0x13,
|
||||
0x7e, 0x97, 0xe8, 0xa3, 0x87, 0x52, 0x67, 0x4b, 0xdc, 0x3d,
|
||||
0xb3, 0x10, 0xde, 0xfc, 0x66, 0xdf, 0x88, 0x7, 0x8a, 0x69,
|
||||
0x76, 0xa8, 0x97, 0xe, 0xf9, 0x65, 0x88, 0x82, 0x19, 00,
|
||||
0xf, 0x4c, 0x43, 0x1d, 0xa4, 0x8, 0xdf, 0x1, 0xe8, 0xf5,
|
||||
0xff, 0x5, 0x3, 0x20, 0xed, 00, 0x1a, 0x54, 0xa2, 0xf9,
|
||||
0x72, 0xc7, 0x9, 0x9b, 0xe9, 0x42, 0x63, 0xba, 0x68, 0x5,
|
||||
0x27, 0x14, 0xb1, 0x4d, 0xdd, 0x15, 0x2, 0x6e, 0x2, 0x6a,
|
||||
0xc6, 0x25, 0xce, 0x49, 0x51, 0x75, 0xe6, 0xae, 0xa2, 0x14,
|
||||
0xa5, 0x84, 0x20, 0x1, 0xc4, 0xd, 0xbc, 0x45, 0xaf, 0x10,
|
||||
0x9c, 0x38, 0x68, 0x30, 0x96, 0x31, 0x8c, 0x60, 0xf4, 0xc2,
|
||||
0x14, 0x59, 0x3c, 0x5f, 0x2f, 0x52, 0xb6, 0x21, 0x73, 0x50,
|
||||
0xa2, 0xf, 0xba, 0x3, 0x44, 0x21, 0x2e, 0x11, 0xb8, 0x60,
|
||||
0xd8, 0x94, 0xa4, 0x36, 0xfd, 0x45, 0x2f, 0x64, 0x41, 0x9,
|
||||
0xe, 0x2, 0x42, 0x97, 0x64, 0xcc, 0xd3, 0xf5, 0xd0, 0x58,
|
||||
0x22, 0x57, 0x14, 00, 0x69, 0xa, 0xc8, 0x1, 0x30, 0xfe,
|
||||
0x50, 0x4c, 0x35, 0xec, 0x1, 0x3, 0xa3, 0x3, 0xc0, 0xf8,
|
||||
0x42, 0x69, 0xce, 0x61, 0x94, 0x43, 0x3d, 0x3, 0x32, 0x7,
|
||||
0xcb, 0x8e, 0xd1, 0x8b, 0xdb, 0x45, 0xf, 0x15, 0x84, 0x3,
|
||||
0x50, 0x37, 0x8e, 0x31, 0x8c, 0xb2, 0x9a, 0xf5, 0xac, 0xbd,
|
||||
0x50, 0x84, 0xee, 0x1a, 0xf1, 0x8b, 0xb3, 0xba, 0x75, 0x18,
|
||||
0x12, 0xeb, 0x56, 0x3a, 0x6c, 0xe1, 0xc1, 0x5e, 0x5c, 0x83,
|
||||
0xa5, 0x1, 0x2, 0xc7, 0x32, 0x4c, 0xd1, 0x50, 0xdc, 0x35,
|
||||
0x42, 0x96, 0x1b, 0xaa, 0x86, 0x47, 0x73, 0xd7, 0x8, 0x5d,
|
||||
0x54, 0xa3, 0x1c, 0x20, 0x2a, 0xc7, 0x35, 0x8a, 0xa1, 0xb,
|
||||
0x4a, 0xb4, 0x2, 0xb1, 0x90, 0x14, 0x6a, 0x2, 0x89, 0x4a,
|
||||
0x22, 0x65, 0x58, 0xe0, 0x73, 0x1a, 0xd0, 00, 0x1b, 0x7,
|
||||
0x40, 0x1, 0x8, 0x44, 0x55, 00, 0x54, 0x30, 0x9d, 0x40,
|
||||
0x5b, 0xd9, 0xba, 0x42, 0x2c, 0xe3, 0x43, 0xe6, 0xa8, 0x6,
|
||||
0x5f, 0x8b, 0x7, 0x8a, 0xb0, 0x8e, 0x8, 0x1c, 0x69, 0xcb,
|
||||
0x1d, 0x28, 0xf0, 0x2a, 0x22, 0x6c, 0xff, 0xc, 0x96, 0xa0,
|
||||
0xd0, 0x80, 0xac, 0x87, 0xb8, 0x21, 0xb, 0xd2, 0xe2, 0xce,
|
||||
0x16, 0xae, 0x5, 0x10, 0x5d, 0x1d, 0x1a, 0xc, 0x77, 0x82,
|
||||
0x8, 0x1d, 0xd7, 0x98, 0x5c, 0x50, 0xcd, 0x78, 0x39, 0xca,
|
||||
0x8e, 0x88, 0x1c, 0x6a, 0x38, 0x2a, 0xf7, 0xa6, 0xb, 00,
|
||||
0x6, 0xdc, 0x11, 0x8f, 0x3, 0x75, 0x9d, 0x69, 0x7d, 0x97,
|
||||
0xd, 0x19, 0xea, 0xae, 0xb5, 0x26, 0xea, 0x46, 0x6c, 0x71,
|
||||
0x7, 0x5e, 0x12, 0xcd, 0x35, 0x7a, 0x9c, 0xa8, 0xc6, 0x6b,
|
||||
0x65, 0x11, 0xbd, 0x4b, 0x18, 0x50, 0x40, 0xa6, 0x28, 0x67,
|
||||
0xe3, 0x38, 0xe1, 0x3f, 0x2e, 0xc1, 0xb3, 0x21, 0xf2, 0xc,
|
||||
0x91, 0x5, 0xa3, 0x4a, 0x5d, 0xa4, 0x11, 0x20, 0x7, 0xda,
|
||||
0x98, 0x5a, 0x76, 0x4b, 0xbb, 0x51, 0xf, 0xe9, 0xa2, 0x78,
|
||||
0x94, 0x8, 0x6e, 0x88, 0xc4, 0x2b, 0xdf, 0xbd, 0x95, 0x77,
|
||||
0x44, 0xd9, 0x78, 0x9e, 0xee, 0x52, 0x29, 0x22, 0x70, 0x70,
|
||||
0xa2, 0xc1, 0x7b, 0x53, 0xc4, 0x4a, 0x37, 0x14, 0xdf, 0xef,
|
||||
0xea, 0x16, 0x49, 0xf7, 0x65, 0x48, 0x7e, 0x43, 0xf4, 0x87,
|
||||
0x8, 0xf0, 0x77, 0xba, 0x3, 0x8, 0x81, 0x32, 0xe4, 0x36,
|
||||
0x60, 0xd6, 0x6d, 0x37, 0x44, 0xd4, 0x50, 0x4, 0x86, 0x5,
|
||||
0x71, 0x9, 0x5, 0x2b, 0x6c, 0xbc, 0xae, 0x7b, 0xb0, 0x88,
|
||||
0x82, 0xe1, 0xdb, 0xd6, 0x99, 0x62, 0x8c, 0x25, 0x82, 0x86,
|
||||
0x8c, 0xbf, 0xb, 0xe4, 00, 0x5d, 0x58, 0x77, 0xa6, 0xb0,
|
||||
0x31, 0x91, 0x42, 0xbc, 0x90, 0x11, 0x83, 0x88, 0x1c, 0x7f,
|
||||
0xd8, 0xc0, 0x1, 0xa8, 0xbb, 00, 0x13, 0xac, 0x98, 0xc5,
|
||||
0x3d, 0xe6, 0xdb, 0x8b, 0x41, 0xd4, 0xd1, 0x19, 0x27, 0x39,
|
||||
0xbc, 0x38, 0x6e, 0x9d, 0x8e, 0x2b, 0xd6, 0x8a, 0x66, 0x42,
|
||||
0xe3, 0x44, 0xe8, 0x38, 0x32, 0x61, 0xb, 0xac, 0x66, 0xdc,
|
||||
0x85, 0xb3, 0xff, 0x4b, 0x4c, 0x56, 0x88, 0x93, 0x43, 0x64,
|
||||
0xd, 0x35, 0x60, 0xe0, 0x1, 0xf, 0x80, 0x40, 0x9e, 0x3b,
|
||||
0xc0, 0xb4, 0xe, 0x31, 0x53, 0xbb, 0x5, 0xee, 0x50, 0x31,
|
||||
0xd4, 0x6a, 0xce, 0xd, 0x97, 0x88, 0xc1, 0xb2, 0x55, 0x32,
|
||||
0x87, 0xba, 0x1, 0xa, 0x4, 0x7f, 0x98, 0x44, 0xc7, 0x18,
|
||||
0x72, 0xee, 0xc, 0xd, 0xa0, 0x5a, 0x16, 0x4f, 0x16, 0x45,
|
||||
0x3e, 0x52, 0x9c, 0x13, 0x22, 0x28, 0x2d, 0x9, 0xe9, 0x1c,
|
||||
0xa0, 0x6, 0xf5, 0x71, 0x5b, 0xdc, 0xb8, 0x2d, 0x7b, 0x28,
|
||||
0x1d, 0xec, 0xcd, 0x9d, 0x22, 0xde, 0x4b, 0x22, 0x44, 0x93,
|
||||
0x57, 0xd1, 0x1b, 0x42, 0x61, 0xf1, 0x7e, 0x41, 0xdb, 0x11,
|
||||
0x95, 0x83, 0x91, 0xb9, 0x3, 0xae, 0x80, 0x40, 0x31, 0xe3,
|
||||
0xf4, 0xb5, 0xf0, 0xd1, 0x43, 0xda, 0x34, 0x42, 0x82, 0x16,
|
||||
0x24, 0x39, 0xfd, 0x99, 0xc0, 0x21, 0x5a, 0x64, 0xee, 00,
|
||||
0x51, 0xe3, 0x13, 0xb9, 0x3a, 0xc7, 0xb0, 0x16, 0xd0, 0x81,
|
||||
0x1d, 0x5a, 0x5f, 0x61, 0xf1, 0x1a, 0xc9, 0x99, 0xe6, 0x71,
|
||||
0xaf, 0xfb, 0x56, 0x8, 0x59, 0x40, 0x83, 0x1b, 0xd1, 0x56,
|
||||
0x54, 0x24, 0xc1, 0x85, 0x43, 0x1f, 0xf9, 0x60, 0x14, 0xbe,
|
||||
0x3, 0xd1, 0x39, 0xc8, 0x41, 0x8e, 0x69, 0x28, 0x23, 0x5f,
|
||||
0xf5, 0x23, 0xb5, 0x96, 0x4f, 0xeb, 0x21, 0x74, 0x60, 0xa3,
|
||||
0xd1, 0xba, 0xb, 0x46, 0xba, 0x17, 0x1d, 0x66, 0xd6, 0x8d,
|
||||
0xf9, 0x43, 0xba, 0xc8, 0xb2, 0x96, 0x8d, 0x4b, 0x22, 0x1e,
|
||||
0x7f, 0xb7, 0x86, 0x1, 0x7a, 0x76, 0x4c, 0xbd, 0xd6, 0x8b,
|
||||
0x66, 0x5c, 0x23, 0x1c, 0xb5, 0x2e, 0x91, 0xb0, 0xf, 0x52,
|
||||
0x21, 0x15, 0x9c, 0xa0, 0x5, 0x8e, 0xd8, 0x37, 0x87, 0xb4,
|
||||
0xf1, 0x88, 0x26, 0xc0, 0x20, 0x5, 0x21, 0x18, 0x1, 0x30,
|
||||
0xd4, 0xb1, 0x6e, 0x76, 0x63, 0xf9, 0xa2, 0xc1, 0xff, 0x8,
|
||||
0xc7, 0x38, 0x56, 0xbe, 0xf2, 0x6e, 0x60, 0x3, 0x71, 0x12,
|
||||
0xce, 0xdd, 0x97, 0x9d, 0xdd, 0xef, 0xc6, 0xfd, 0xbb, 0x43,
|
||||
0xe6, 0x8, 0xb8, 0xee, 0x28, 0x1, 0x6c, 0x12, 0x5d, 0xe3,
|
||||
0xb6, 0xad, 0x6b, 0x44, 0x33, 0xe4, 0xda, 0x61, 0xf8, 0x61,
|
||||
0x4d, 0x11, 0xb2, 0x28, 0xc6, 0xb7, 0xc3, 0xed, 0xb3, 0x71,
|
||||
0x9f, 0xd1, 0xe2, 0x18, 0xd7, 0x78, 0x80, 0xce, 0x91, 0x9,
|
||||
0x13, 0x50, 0x60, 00, 0x49, 0x2b, 00, 0xd3, 0x32, 0x41,
|
||||
0x85, 0x26, 0x50, 0x81, 0x7c, 0x54, 0xc5, 0x1d, 0xe0, 0x74,
|
||||
0x61, 0x8b, 0xb2, 0xdb, 0x42, 0x16, 0x97, 0x90, 0x31, 0x86,
|
||||
0x57, 0xc7, 0x9, 0x56, 0x1f, 0xba, 0xe6, 0x7c, 0xbb, 0x39,
|
||||
0x87, 0xca, 0xd1, 0x5b, 0xdd, 0xb5, 0x82, 0xe9, 0x1d, 0x52,
|
||||
0x78, 0xeb, 0x86, 0x81, 0x57, 0x68, 00, 0xfd, 0x9a, 0x85,
|
||||
0x40, 0xc5, 0x2f, 0xae, 0xd1, 0x73, 0x5e, 0x3a, 0xbd, 0xb9,
|
||||
0x50, 0xcf, 0xf8, 0xba, 0xe, 0x61, 0x1, 0x7, 0x7a, 0x6e,
|
||||
0x69, 0xe4, 0xa0, 0x42, 0x2, 0x8, 0x90, 0x80, 0x31, 0xc0,
|
||||
0x1b, 0xbb, 0x2, 0x47, 0x24, 0xd7, 0x16, 0xe, 0xd2, 0x33,
|
||||
0xa7, 0x48, 0xef, 0x36, 0x67, 0x3a, 0x38, 0x50, 0x51, 0x3c,
|
||||
0x4a, 0x9f, 0x68, 0x1c, 0xb8, 0xc6, 0x5d, 0x30, 0xf0, 0x8a,
|
||||
0xe, 0x5b, 0xe0, 0x52, 0x7f, 0x58, 0xbb, 0x84, 0x61, 0xf1,
|
||||
0x3e, 0x71, 0x83, 0x54, 0xfc, 0xe2, 0x8a, 0x27, 0x11, 0x31,
|
||||
0x90, 0x39, 0x5d, 0xa, 0xba, 0x61, 0xca, 00, 0x8, 0xc1,
|
||||
0x3d, 0x47, 0x7b, 0x48, 0x99, 0x52, 0xc2, 0xae, 0x11, 0x1f,
|
||||
0x11, 0xe8, 0xe3, 0xce, 0xf4, 0x6b, 0x78, 0x37, 0x77, 0x81,
|
||||
0x2e, 0x11, 0xea, 0x7b, 0xbd, 0xfa, 0xd, 0x75, 0xf7, 0xf5,
|
||||
0x1d, 0xbc, 0x44, 0x2f, 0xc4, 0xb9, 0x5c, 0x49, 0x22, 0x1e,
|
||||
0xf7, 0x52, 0x3f, 0xc7, 0xff, 0x18, 0xa4, 0xdb, 0x43, 0x3,
|
||||
0x4c, 0xd0, 0x7b, 0xb8, 0x80, 0x2a, 00, 0x1e, 0xe0, 0x8a,
|
||||
0xb0, 0x4f, 0x91, 0x7f, 0x84, 0x17, 0xd2, 0xf2, 0x1d, 0xcc,
|
||||
0x74, 0x6a, 0xc4, 0x1c, 0x77, 0x9e, 0x4f, 0xd1, 0xf4, 0xf3,
|
||||
0x5d, 0xeb, 0x6a, 0xc8, 0x70, 0xdb, 0xb, 0x67, 0xa, 0x8,
|
||||
0x17, 0x59, 0xcc, 0x35, 0x54, 0x89, 0x27, 0x75, 0xc4, 0x40,
|
||||
0x1, 0xf, 0x4, 0x1, 0x47, 0x70, 0x4, 0x53, 0x36, 0x44,
|
||||
0xd6, 0x10, 0x2, 0xe, 0x44, 00, 0xf4, 0x42, 0x7c, 0x7a,
|
||||
0xc4, 0x9, 0xb9, 0x45, 0x24, 0xf3, 0xa7, 0x37, 0x72, 0xb7,
|
||||
0x21, 0xf6, 0x57, 0x3c, 0xf9, 0x87, 0x22, 0xfb, 0x97, 0x3b,
|
||||
0xd5, 0xc7, 0x21, 0xd9, 0x60, 0xb, 0xc3, 0x33, 0x43, 0x3f,
|
||||
0xc5, 0xd, 0xdd, 0x47, 0x6e, 0xbe, 0x64, 0x21, 0xe0, 0x47,
|
||||
0x22, 0x46, 0xd5, 0x46, 0x14, 0xb0, 0x75, 0x72, 0xe4, 0x3d,
|
||||
0x74, 0xe4, 0x40, 0xca, 0xe4, 0x7e, 0x53, 0x4, 0xa, 0xd4,
|
||||
0x90, 0x7c, 0x6f, 0x37, 0x63, 0x1d, 0x28, 0x20, 0x1f, 0xa8,
|
||||
0x3b, 0x50, 0xb4, 0x3c, 0xa9, 0xe7, 0x3a, 0x25, 0xc8, 0x21,
|
||||
0xe6, 0xd0, 0xc, 0xa0, 0x50, 0x8, 0x57, 0x33, 0x43, 0x98,
|
||||
0x46, 0x80, 0xde, 0x67, 0x80, 0x31, 0x38, 0x22, 0xf4, 0x34,
|
||||
0x2, 0xc4, 0xd4, 0x49, 0xea, 0xf0, 0xd, 0x25, 00, 0x4a,
|
||||
0x16, 0x8, 0x48, 0x1a, 0x5, 0x84, 0xca, 0x7, 0x77, 0xf4,
|
||||
0x37, 0x22, 0xdc, 0x60, 0xa, 0xc5, 0x53, 0xc, 0x52, 0xc7,
|
||||
0x21, 0x23, 0x88, 0x3b, 0xb4, 0x96, 0x58, 0xc5, 0x60, 0xa,
|
||||
0x29, 0x84, 0x7d, 0xe8, 0xa3, 0x8, 0x4b, 0xd8, 0x74, 0x92,
|
||||
0x55, 0x6e, 0x7, 0x48, 0x22, 0xf4, 0x34, 0x4c, 0xea, 0xb0,
|
||||
0x49, 0x5c, 0x8, 0xc, 0x1a, 0x90, 0x4c, 0xcb, 0x24, 0x6f,
|
||||
0xc6, 0x63, 0x87, 0xd2, 0xe3, 0x5e, 0xf2, 0x67, 0x86, 0x1c,
|
||||
0xff, 0xc8, 0x74, 0xe5, 0x60, 0xb, 0x99, 0xa7, 0x37, 0x60,
|
||||
0xa5, 0x22, 0xe1, 0xe0, 0x88, 0x82, 0x50, 0x8, 0x79, 0xf8,
|
||||
0x21, 0xd8, 0xb0, 0x31, 0x29, 0xb4, 0x4e, 0x46, 0xf7, 0x63,
|
||||
0x86, 0xb7, 0x87, 0x2f, 0xd8, 0x87, 0x58, 0x78, 0x49, 0x22,
|
||||
0x60, 0x3a, 0x71, 0x4, 00, 0xfb, 0xa4, 0xe, 0x73, 0x10,
|
||||
0x3e, 0x3d, 0x74, 0x88, 0x93, 0xa8, 0x37, 0x15, 0x75, 0x3e,
|
||||
0x9b, 0x8, 0x66, 0x42, 0x8, 0x89, 0x92, 0xa8, 0x3b, 0x9c,
|
||||
0x50, 0x78, 0xb5, 0xf5, 0x77, 0x8d, 0xf3, 0x36, 0x64, 0x28,
|
||||
0x37, 0xd4, 0xf0, 0x32, 0x3d, 0xe5, 0x53, 0xe7, 0x23, 0x8c,
|
||||
0x1e, 0x52, 0x7b, 0x5, 0x71, 0x7b, 0x51, 0xe7, 0x87, 0x6c,
|
||||
0x4, 00, 0x11, 0x30, 0x7, 0xda, 0x70, 0x8, 0xc5, 0x84,
|
||||
0x7, 0xb8, 0xd0, 0x1, 0x51, 0x25, 0x1, 0xb8, 0xc0, 0x83,
|
||||
0xac, 0x63, 0xa, 0xc1, 0x50, 0x52, 0x25, 0xa5, 0x38, 0xd1,
|
||||
0x3, 0x9, 0x2c, 0xa8, 0x22, 0x1b, 0x28, 0x8, 0x43, 0x78,
|
||||
0x3a, 0xc3, 0x75, 0x51, 0x4, 0x37, 0x22, 0x91, 0x36, 0x63,
|
||||
0x94, 00, 0x42, 0x28, 0x62, 0xe, 0xd7, 0x30, 0xc, 0xb6,
|
||||
0xd0, 0x53, 00, 0x8, 0x8, 0xa6, 0x27, 0x20, 0xcc, 0x48,
|
||||
0x10, 0xce, 0x98, 0x7b, 0x22, 0x42, 0xc, 0xdb, 0x83, 0x34,
|
||||
0x10, 0x30, 0x2, 0x1f, 0x70, 0x54, 0x3, 0xb0, 0x1, 0x19,
|
||||
0xe0, 0x78, 0x1, 00, 0x3, 0xdf, 0xe0, 0x8d, 0xf3, 0xd6,
|
||||
0x52, 0xcd, 0xb0, 0x5a, 0xba, 0x13, 0x7d, 0xad, 0x86, 0x89,
|
||||
0xeb, 0x18, 0x20, 0x85, 0x44, 0x6d, 0x29, 0x92, 0xe, 0xd7,
|
||||
0x26, 0x73, 0xd5, 0x96, 0x22, 0xe5, 0x50, 0xd, 0xbf, 0x80,
|
||||
0x89, 0x7b, 0xa3, 0xb, 0x85, 0xf7, 0x8f, 0x3, 0x11, 0x90,
|
||||
0x52, 0x47, 0xe, 0x47, 0x80, 0x75, 0x49, 0x73, 0x62, 0x9e,
|
||||
0x73, 00, 0x7b, 0x20, 0x60, 0x93, 0xff, 0x68, 0x5a, 0x1c,
|
||||
0x92, 0xe, 0xd7, 0x80, 0x6f, 0xb2, 0xf5, 0x8e, 0x22, 0x92,
|
||||
0x8e, 0x1b, 0x9, 0x20, 0xc7, 0x90, 0x52, 0xb9, 0xc3, 0x86,
|
||||
0xf5, 0x98, 0x84, 0xad, 0xf3, 0x58, 0x44, 0x52, 0xe, 0xd0,
|
||||
0x70, 0x7f, 0xb8, 0x83, 0xa, 0x23, 0xe9, 0x8f, 0x87, 0x67,
|
||||
0x85, 0xcf, 0x28, 0x83, 0x11, 0xd0, 0x5f, 0x9e, 0x23, 00,
|
||||
0x2a, 0x86, 0x93, 0x17, 0x15, 0x7d, 0xe9, 0x50, 0x94, 0xe,
|
||||
0x35, 0x80, 0x34, 0x97, 0x8b, 0x3e, 0x7, 0x95, 0x62, 0xe6,
|
||||
0x8b, 0x1f, 0x42, 0xd, 0xc0, 0xd8, 0x38, 0xba, 0x30, 0x8c,
|
||||
0x41, 0xd6, 0x96, 0x7c, 0xd3, 0x76, 0xcb, 0x58, 0x95, 0x93,
|
||||
0x65, 0x8a, 0xcf, 0xf5, 0x5, 0x47, 0xa3, 0x95, 0x1, 0x60,
|
||||
0x1, 0x1, 0x25, 0x91, 0x7b, 0x63, 0x6a, 0x2, 0x12, 0xe,
|
||||
0xed, 0xa8, 0x7a, 0x70, 0x99, 0x77, 0x1a, 0x89, 0x77, 0xe5,
|
||||
0xa0, 0x86, 0x6b, 0x5, 0x58, 0x25, 0x52, 0x66, 0xba, 0xa3,
|
||||
0x8, 0x48, 0x59, 0x24, 0xe6, 00, 0x99, 0x84, 0x35, 0x74,
|
||||
0xef, 0x64, 0x97, 0x7c, 0x78, 0x85, 0xb, 0xa4, 0x5, 0x11,
|
||||
0x20, 0x93, 0xdc, 0x53, 00, 0x1a, 0xf0, 0x7, 0xa2, 0x5,
|
||||
0x98, 0xb4, 0x88, 0x91, 0xea, 0xd0, 0xc, 0x46, 0xe9, 0x3a,
|
||||
0xd2, 0xf4, 0x79, 0x89, 0x59, 0x22, 0x85, 0x89, 0x3b, 0xb2,
|
||||
0x80, 0x77, 00, 0x92, 0xd, 0x72, 0xb9, 0x37, 0xf4, 0x75,
|
||||
0x24, 0xe9, 0xa0, 0x9a, 0xf2, 0x48, 0x8f, 0x7a, 0x58, 0x80,
|
||||
0x77, 0xc9, 0x99, 0x25, 0x2, 0xc, 0x29, 00, 0x1, 0xb,
|
||||
0x10, 0x41, 0xa, 0xd0, 00, 0x14, 0xd0, 0x4, 0xef, 0xc6,
|
||||
0x21, 0xc7, 0xe6, 0x62, 0xa8, 0x19, 0xe, 0x96, 0xa9, 0x5d,
|
||||
0xea, 0x85, 0x22, 0x42, 0x49, 0x9b, 0x6c, 0xd9, 0x6b, 0x8d,
|
||||
0x10, 0x82, 0x21, 0x62, 0xe, 0xa4, 0x57, 0x3c, 0x77, 0x87,
|
||||
0x24, 0xd9, 0xff, 0x99, 0x3b, 0x52, 0x59, 0x97, 0xa4, 0x18,
|
||||
0x4f, 0x30, 0x78, 0x95, 0x22, 0x42, 0xe, 0x99, 0x90, 0x9,
|
||||
0xb8, 0x40, 0xc, 0xd3, 0x60, 0xd, 0xc0, 0xf0, 0x8, 0x8f,
|
||||
0x90, 0x9, 0xd6, 0x40, 0xe, 0x97, 0x77, 0x72, 0xe6, 0x84,
|
||||
0x9a, 0xea, 0xc0, 0x4a, 0xdf, 0x75, 0x98, 0x1b, 0x72, 0x9d,
|
||||
0x2f, 0x54, 0x74, 0x4, 0x75, 0x8e, 0xdd, 0xc9, 0x4a, 0xbd,
|
||||
0x6, 0x9, 0xd4, 0xe3, 0x9c, 0xb4, 0xa9, 0x2f, 0x1d, 0x99,
|
||||
0x3b, 0xad, 0xc0, 0x7d, 0x1b, 0xc2, 0x92, 0x2, 0xe1, 0x92,
|
||||
0x7e, 0x38, 0x41, 0xf, 0x10, 0x5a, 0x25, 0xf2, 0x9c, 0xa5,
|
||||
0xc6, 0x9f, 0xce, 0xb7, 0x6c, 0x85, 0x90, 0x69, 0x19, 0x69,
|
||||
0x96, 0x25, 0x42, 0x4e, 0xc5, 0x83, 0xa, 0x6, 0xea, 0x21,
|
||||
0xab, 0xd4, 0x57, 0xae, 0x53, 0x89, 0x26, 0xd8, 0xb, 0x87,
|
||||
0x75, 0x22, 0xdc, 0x80, 0x92, 0xfd, 0x18, 0x20, 0x14, 0xda,
|
||||
0x26, 0xe9, 0x29, 0x90, 0xf3, 0x14, 0x8d, 0x1, 0x90, 0x3,
|
||||
0xf9, 0x19, 0x22, 0x1c, 0x3a, 0x6f, 0x94, 0x83, 0xe, 0xa9,
|
||||
0x96, 0x3b, 0x10, 0x85, 0x8b, 0x89, 0x66, 0x22, 0x20, 0x9,
|
||||
0x80, 0x3e, 0x68, 0x63, 0xe9, 0xd0, 0xd, 0x85, 0xb4, 0x6d,
|
||||
0x85, 0x80, 0x99, 0x1c, 0x22, 0x64, 0x7d, 0x80, 0xa, 0xcd,
|
||||
0x80, 0xd, 0x10, 0xe7, 0x3b, 0xe9, 0x90, 0xd, 0x8c, 0xc9,
|
||||
0x7f, 0xe6, 0x9, 0x9c, 0x9b, 0xa9, 0x9e, 0x3b, 0x8a, 0x34,
|
||||
0x1, 0x90, 0x2, 0x11, 0x49, 0x22, 0x41, 0x1a, 0x98, 0xfc,
|
||||
0xa9, 0xe, 0xf, 0x2a, 0x76, 0xd, 0xaa, 0xe, 0x2, 0x6a,
|
||||
0x22, 0xd4, 0x80, 0x92, 0x7d, 0xa3, 0x61, 0xd0, 0xc0, 0x2c,
|
||||
0x2a, 0x97, 0xd, 0xd5, 0x70, 0xc, 0x5f, 0x7a, 0x69, 0xc9,
|
||||
0x77, 0x60, 0xab, 0xe3, 0x35, 0xa8, 0x10, 0x31, 0xd0, 0x90,
|
||||
0x5c, 0xe0, 0xc0, 0x72, 0xc6, 0x42, 0xd, 0xc7, 0xff, 0x80,
|
||||
0x96, 0x5b, 0x74, 0xd, 0x71, 0x73, 0xa3, 0x16, 0xaa, 0x43,
|
||||
0x3c, 0x14, 00, 0x19, 0x30, 0x72, 0x6a, 0x8a, 0x88, 0xa7,
|
||||
0xe9, 0x3b, 0xd7, 0xe0, 0xa8, 0xf2, 0x33, 0x95, 0x41, 0xf9,
|
||||
0x9a, 0x4a, 0xaa, 0x6d, 0xd1, 0xb3, 0x3a, 0x94, 00, 0x38,
|
||||
0xb6, 0x70, 0x9, 0x59, 0xb4, 0x8f, 0x94, 0x90, 0xa2, 0x1b,
|
||||
0x52, 0xa4, 0x7b, 0x3, 0x3b, 0x5, 0xd5, 0xb, 0xbd, 0xa0,
|
||||
0xb, 0xa6, 0x30, 0x51, 00, 0x28, 0x8, 0x6f, 0x39, 0x8a,
|
||||
0x62, 0x5a, 0x8a, 0xc2, 0x9, 0x22, 0xdf, 0xd0, 0x4, 0xfe,
|
||||
0xa4, 0x34, 0x4d, 0x10, 0x60, 0x23, 0xb2, 0xa6, 0x9b, 0x7a,
|
||||
0x5c, 0x3e, 0xa9, 0x5d, 0xbf, 0xd0, 0x86, 0x72, 0x2a, 0xaa,
|
||||
0x26, 0x32, 0xe, 0xd3, 0x79, 0x4b, 0xb9, 0x9a, 0x3e, 0x8a,
|
||||
0xc0, 0x9f, 0x97, 00, 0x53, 0xcb, 0xa6, 0x88, 0x4e, 0x44,
|
||||
0x9, 0xd5, 0x40, 0x39, 0x92, 0x9a, 0xa3, 0x6d, 0xa8, 0xd,
|
||||
0x29, 00, 0x7c, 0xd, 0x50, 0x2, 0x99, 0xa0, 0xc, 0xea,
|
||||
0xba, 0xae, 0xea, 0x6a, 0xd, 0x97, 0x87, 0xac, 0x99, 0xd8,
|
||||
0xa6, 0x6e, 0xca, 0x5a, 0x6a, 0xc9, 0x6f, 0x24, 0x7a, 0x22,
|
||||
0xd8, 0xa0, 0x86, 0xd5, 0x1a, 0x3f, 0x5e, 0xa3, 0x6f, 0x20,
|
||||
0x92, 0xad, 0xc5, 0x57, 0x8, 0x71, 0xc8, 0xab, 0x55, 0x18,
|
||||
0x9c, 0x64, 0xfa, 0x64, 0xa4, 0xf0, 0x5, 0x16, 0x20, 0x93,
|
||||
0x4, 00, 0x1, 0x14, 0xf0, 0xb0, 0x10, 0xfb, 0xb0, 0x23,
|
||||
0x70, 0x65, 0x98, 0xf7, 0x95, 0xe9, 0x66, 0x9b, 0x33, 0x6,
|
||||
0x9, 0xd5, 0x39, 0xa2, 0x49, 0xaa, 0x2b, 0xf9, 0xca, 0xa2,
|
||||
0x53, 0xe4, 0x36, 0xc3, 00, 0x94, 0x95, 0xa6, 0xad, 0x7a,
|
||||
0x54, 0x8, 0xb6, 0x20, 0xa1, 0x99, 0x79, 0x9e, 0xf8, 0x25,
|
||||
0xae, 0x24, 0x32, 0xd, 0x1e, 0xb0, 00, 0x6, 0x40, 0x93,
|
||||
0xd4, 0x5, 0x1, 0xed, 0xff, 0x17, 0x86, 0x4, 0x96, 0x6e,
|
||||
0x69, 0xd6, 0x6b, 0xbb, 0xca, 0xb1, 0xaf, 0xa6, 0x22, 0x5d,
|
||||
0xaa, 0xb, 0x92, 0x16, 0xb2, 0x80, 0x30, 0x3f, 0xc3, 0x68,
|
||||
0xe, 0x96, 0xa6, 0x45, 0xab, 0x93, 0xb2, 0xde, 0xa2, 0x99,
|
||||
0xbe, 0xda, 0x2, 0x8b, 0x20, 0x75, 0xca, 0xa0, 0x80, 0x5a,
|
||||
0xc9, 0x3d, 0x36, 0x6b, 0x9a, 0xf1, 0x9a, 0x6e, 0xe9, 0x30,
|
||||
0x6d, 0x32, 0x27, 0xa2, 0x37, 0x76, 0xaf, 0xfa, 0x37, 0xc,
|
||||
0x8b, 0xa3, 0x82, 0x32, 0x85, 0xa, 0xd5, 00, 0x97, 0xe1,
|
||||
0xa0, 0x94, 0x1d, 0x4, 0x8, 0x7d, 00, 0x9, 0xbd, 0xe0,
|
||||
0xb5, 0x2b, 0xdb, 0xab, 0xe8, 0x9, 0x75, 0x51, 0x5b, 0x59,
|
||||
0x54, 0x5b, 0xb5, 0x49, 0x73, 0xb5, 0xa3, 0xd5, 0x60, 0xab,
|
||||
0x23, 0xaf, 0xea, 0xc0, 0xd, 0x43, 0xdb, 0x3a, 0x14, 0xb6,
|
||||
0x60, 0xd0, 0xa, 0xb4, 0xd7, 0x10, 0x40, 0xdc, 0xba, 0xad,
|
||||
0x33, 0x55, 0x5c, 0x24, 0x92, 0xd, 0x8a, 0x10, 0x85, 0x23,
|
||||
0x84, 0x35, 0x8d, 0xc0, 0x9, 0x90, 0x2a, 0x6e, 0x2c, 0x2b,
|
||||
0x62, 0xe9, 0x59, 0xb7, 0x23, 0x32, 0xb5, 0x78, 0xeb, 0x39,
|
||||
0x7a, 0x8b, 0x79, 0x7c, 0x2b, 0x8, 0x47, 0x5a, 0x31, 0x6a,
|
||||
0x1b, 0xab, 0x82, 0x10, 0x9e, 0xca, 0x77, 0x9b, 0x3f, 0x15,
|
||||
0xa7, 0x1f, 0x52, 0xd, 0xa9, 0xa, 0xb2, 0xaf, 0xb3, 0x37,
|
||||
0x8d, 0x80, 0xa, 0xc3, 00, 0xb7, 0xad, 0x8b, 0xa, 0x1f,
|
||||
0x3, 0x3d, 0x89, 0x6b, 0xba, 0xdc, 0x46, 0x9, 0xa8, 0xf0,
|
||||
0x83, 0x26, 0x12, 0xae, 0x74, 0x2b, 0x75, 0xd6, 0x30, 0x2,
|
||||
0x11, 0x10, 0x1, 0x12, 0x90, 0xbc, 0xca, 0xbb, 0xbc, 0x12,
|
||||
0x80, 0xbc, 0x21, 00, 0x76, 0x78, 0x54, 0xd, 0xb2, 0x80,
|
||||
0xa, 0xad, 0x50, 0xbd, 0xd6, 0x7b, 0xbd, 0xdf, 0xa, 0x2b,
|
||||
0xc1, 0x40, 0xbd, 0xd7, 0xdb, 0xbd, 0xad, 0x90, 0x72, 0x24,
|
||||
0xff, 0x32, 0xe, 0xb6, 0xc0, 0xbd, 0xde, 0x5b, 0xbd, 0x35,
|
||||
0x2a, 0x24, 0xe0, 0x30, 0xc, 0xb2, 0xd0, 0xa, 0xa0, 0x90,
|
||||
0x4e, 0x18, 0xa5, 0x8, 0x8d, 00, 0xa, 0x36, 0xb3, 0xa0,
|
||||
0x29, 0x2, 0xe, 0xc7, 0x70, 0x76, 0xad, 0xa0, 0xaa, 0xc,
|
||||
0x85, 0x51, 0xcf, 0x14, 0xbf, 0xad, 0x10, 0x36, 0x64, 0x29,
|
||||
0x71, 0x4e, 0x3b, 0xb7, 0x17, 0xa7, 0xb9, 0x2, 0x62, 0xd,
|
||||
0x87, 0x80, 0x7, 0x73, 0x80, 0x7, 0x60, 0x77, 0xe, 0xab,
|
||||
0x42, 0xc, 0x10, 0x1c, 0xc1, 0x12, 0x2c, 0xc1, 0xd3, 0x90,
|
||||
0x9f, 0xe9, 0x50, 0xe, 0x18, 0x9c, 0xc1, 0x1a, 0x8c, 0xc1,
|
||||
0x52, 0x67, 0xe, 0x1b, 0xfc, 0xc1, 0x18, 0xc, 0xa0, 0x3,
|
||||
0x2, 0xc2, 0x1b, 0xec, 0x25, 0xe8, 0x90, 0xd, 0xc7, 0xf0,
|
||||
0xb, 0x2a, 0xbc, 0xc2, 0x2b, 0x3c, 0xc, 0xdf, 0xe6, 0xac,
|
||||
0x40, 0x9a, 0xd, 0xd0, 0x30, 0xc, 0x2c, 0x5c, 0xc3, 0x62,
|
||||
0xf3, 0x6d, 0xf5, 0xda, 0x82, 0x4f, 0x57, 0xc0, 0x3d, 0x93,
|
||||
0x9, 0x18, 0x90, 00, 0x9, 0xb0, 00, 0x5a, 0x50, 0x9a,
|
||||
0x9b, 0x52, 0xc4, 0x46, 0x7c, 0xc4, 0x13, 0x3a, 0xc0, 0x2d,
|
||||
0x3b, 0xbc, 0x1c, 0xf2, 0x7, 0x95, 0xfa, 0x3, 0x11, 0x99,
|
||||
0x2a, 0xd6, 0x60, 0xd, 0xda, 0xf0, 0xa3, 0x48, 0x7c, 0xc5,
|
||||
0x58, 0x2c, 0x27, 0xc2, 0xcb, 0xc3, 0x1c, 0x72, 0x8, 0x3c,
|
||||
0x24, 00, 0x50, 0x4c, 0x44, 0x3f, 0xb0, 0x1, 0x1b, 0x50,
|
||||
0x2, 0x52, 0x93, 0xc5, 0x68, 0x9c, 0xc6, 0x70, 0xa6, 0xc4,
|
||||
0x98, 0xcb, 0xc4, 0x1b, 0xe2, 0xc5, 0xf, 0x74, 0x4, 0x11,
|
||||
0xc9, 0xb9, 00, 0xa0, 00, 0x6e, 0xa0, 0xc6, 0x78, 0x9c,
|
||||
0xc7, 0xc1, 0xc6, 0xc6, 0x4d, 0x96, 0xb9, 0x3d, 0xe3, 0xc4,
|
||||
0xf, 0x4, 0x3, 0xf9, 0x32, 0xd, 0x15, 0x80, 0x34, 0xb,
|
||||
0x30, 0x7, 0x7a, 0x9c, 0xc8, 0x8a, 0xff, 0x6c, 0xb9, 0x72,
|
||||
0xbb, 0xc4, 0x5c, 0xfc, 0xc6, 0x5, 0x9, 00, 0x14, 0xf0,
|
||||
0x8, 0xe7, 0x40, 0xc7, 0x76, 0x6c, 0xc5, 0x8b, 0x9c, 0xc9,
|
||||
0x8b, 0xbc, 0xc5, 0x50, 0xdb, 0x33, 0xc7, 0x14, 0x55, 0x1,
|
||||
0xd0, 00, 0x3f, 0x90, 0x3, 0x9c, 0x4, 00, 0x4, 0xe0,
|
||||
0x1, 0x5a, 0xf0, 0x5, 0xaa, 0xbc, 0xca, 0xac, 0x8c, 0x7,
|
||||
0x69, 0x5a, 0x2f, 0x9, 0x9b, 0xca, 0xac, 0x3c, 0xcb, 0xb4,
|
||||
0x5c, 0xcb, 0xb6, 0x7c, 0xcb, 0xb8, 0x9c, 0xcb, 0xba, 0xbc,
|
||||
0xcb, 0xbc, 0xdc, 0xcb, 0xbe, 0xfc, 0xcb, 0xc0, 0x5c, 0xcb,
|
||||
0x6a, 00, 0xc, 0x98, 0xcc, 0xc9, 0x6, 0x1c, 0x20, 0xda,
|
||||
0x30, 0x2, 0x34, 0x49, 0xb3, 0x55, 0x1b, 0x1, 0x37, 0x4b,
|
||||
0x44, 0x75, 0xd4, 0xb9, 0xd2, 0x3c, 0xcd, 0xd4, 0x5c, 0xcd,
|
||||
0xd6, 0x7c, 0xcd, 0xd8, 0x9c, 0xcd, 0xda, 0xac, 0x95, 0x7,
|
||||
0xa0, 0x5, 0xc5, 0xcc, 0xc7, 0x72, 0xe6, 0xc7, 0x1d, 0xa2,
|
||||
0x5, 0xe4, 0x87, 0xcd, 0x9f, 0x6b, 0xd, 0x26, 0xe0, 0x78,
|
||||
0xdb, 0xbc, 0xce, 0xec, 0xdc, 0xce, 0xee, 0xfc, 0xce, 0xed,
|
||||
0x6c, 00, 0x54, 0xf0, 0xcd, 0x97, 0xdb, 0xc7, 0x6e, 0xbc,
|
||||
0x21, 0xc7, 0xa4, 0xce, 0xd7, 0x7c, 0xce, 0xe9, 0xc, 0xcf,
|
||||
0xfe, 0xfc, 0xcf, 00, 0x1d, 0xd0, 0xec, 0x7c, 00, 0xf3,
|
||||
0x1c, 0xb7, 0x5, 0x3b, 0xa6, 0xc7, 0x2c, 0x20, 0x7f, 0x80,
|
||||
0x1, 0x6, 0x30, 00, 0xfa, 0x3c, 0xcd, 0xec, 0x17, 0x20,
|
||||
0xd6, 0x50, 0x2, 0xcc, 0x2c, 0xd0, 0x16, 0x7d, 0xd1, 0x18,
|
||||
0xed, 0xcf, 0x5, 0x50, 0xd0, 0xbf, 0x79, 0xd0, 0x4f, 0x9b,
|
||||
0xd0, 0x2, 0x82, 0xb, 0x4d, 0x80, 0x90, 0x12, 0x50, 00,
|
||||
0xa0, 0x3c, 00, 0x5, 0x90, 0xd2, 0x2a, 0xbd, 0xd2, 0x5,
|
||||
0x50, 0x1, 0xdd, 0x8, 0x20, 0xd6, 0x90, 0x3, 0x7, 0x40,
|
||||
00, 0x2c, 0xff, 0x5d, 0xd3, 0x36, 0x7d, 0xd3, 0x38, 0x9d,
|
||||
0xd3, 0x3a, 0xbd, 0xd3, 0x3c, 0xdd, 0xd3, 0x3e, 0xfd, 0xd3,
|
||||
0x40, 0x1d, 0xd4, 0x3b, 0xcd, 00, 0x5f, 0x40, 0xcf, 0x8d,
|
||||
0xdc, 0xc6, 0x8f, 0xfc, 0x21, 0xed, 0xf6, 0x8, 0x3f, 00,
|
||||
0x8b, 0x6, 0xf0, 0x1, 0x54, 0x10, 0xd5, 0x52, 0x3d, 0xd5,
|
||||
0x54, 0x40, 0x8d, 0x1, 0x42, 0xe, 0xa4, 0xa0, 0x5, 0x54,
|
||||
0xbd, 0xd5, 0x5c, 0xdd, 0xd5, 0x5e, 0xfd, 0xd5, 0x60, 0x1d,
|
||||
0xd6, 0x62, 0x3d, 0xd6, 0x64, 0x5d, 0xd6, 0x66, 0x7d, 0xd6,
|
||||
0x62, 0x3d, 0x6, 0xb8, 0x60, 0xd4, 0x1e, 0x4d, 0xc0, 0x9d,
|
||||
0xfc, 0xb2, 0x54, 0xab, 00, 0x88, 0xac, 0xc9, 0x74, 0xad,
|
||||
0xc9, 0xc6, 0x2c, 0xb5, 0x15, 0x30, 0x3a, 0xc, 0x30, 0xd7,
|
||||
0x75, 0xdd, 0xd7, 0x7a, 0x7c, 0xd7, 0x24, 0x12, 0xd3, 0x1b,
|
||||
0xa0, 0x1, 0x23, 0xf0, 0x97, 0x7e, 0x7d, 0xd8, 0x68, 0xc,
|
||||
0xd8, 0xb, 0x34, 0xc5, 0xdf, 0x40, 0xc4, 0x88, 0xfd, 0xd8,
|
||||
0x47, 0xac, 0xd8, 0x90, 0x3d, 0xd9, 0x7d, 0x2d, 0xd9, 0x94,
|
||||
0x7d, 0xd9, 0x9b, 0xc, 0xce, 0x9, 0x1, 0x4, 0xe9, 0xe9,
|
||||
0x7, 0x22, 0x8c, 0xd9, 0xa0, 0xbd, 0x29, 0xce, 00, 0x6,
|
||||
0xcf, 0xe1, 0x82, 0xe, 0x61, 0x6, 0xab, 0xe1, 0x13, 0x67,
|
||||
0x10, 0xd, 0xa1, 0xdd, 0xda, 0x6a, 0x9c, 0xe, 0xc2, 0x60,
|
||||
0x20, 0x3e, 0x21, 0x23, 0x13, 0x51, 0x9, 0x3c, 00, 0x23,
|
||||
0x28, 0xb0, 0x3, 0xa3, 0xf0, 0x1f, 0xd2, 0x82, 0xe, 0xbe,
|
||||
0xfd, 0xdb, 0xc0, 0x1d, 0xdc, 0xc2, 0x3d, 0xdc, 0xc4, 0x5d,
|
||||
0xdc, 0xc6, 0x7d, 0xdc, 0xc1, 0xed, 0xc1, 0x24, 0xbc, 0xdc,
|
||||
0xcc, 0xdd, 0xdc, 0xce, 0xfd, 0xdc, 0xcc, 0x2d, 0xe, 0xd2,
|
||||
0x3d, 0xdd, 0xd4, 0x5d, 0xdd, 0xd6, 0x7d, 0xdd, 0xd8, 0x9d,
|
||||
0xdd, 0xda, 0xbd, 0xdd, 0xd4, 0xbd, 0xd, 0xaf, 0xff, 0x80,
|
||||
0x6, 0x2d, 00, 0x23, 0x2a, 0x40, 0xdb, 0x12, 0x81, 0xc,
|
||||
0x3b, 0xc0, 0x17, 0x2a, 0xc0, 0x5, 0xa3, 0x90, 0xc, 0xc2,
|
||||
0x50, 0x9, 0xee, 0xfd, 0xde, 0xf0, 0x1d, 0xdf, 0xf2, 0x3d,
|
||||
0xdf, 0xf4, 0x5d, 0xdf, 0xf6, 0x7d, 0xdf, 0xf3, 0xbd, 0x8,
|
||||
0x7a, 0x90, 0x7, 0x7a, 0xd0, 0xdf, 0xfe, 0xfd, 0xdf, 00,
|
||||
0x1e, 0xe0, 0x2, 0x3e, 0xe0, 0x4, 0x5e, 0xe0, 0x6, 0x1e,
|
||||
0xe0, 0x77, 0x90, 0xe0, 0xa, 0xbe, 0xe0, 0xc, 0xde, 0xe0,
|
||||
0xe, 0xfe, 0xe0, 0x10, 0x1e, 0xe1, 0x12, 0xbe, 0xe0, 0x6f,
|
||||
0x80, 0x4, 0x9a, 0xd1, 0x15, 0x5b, 0x40, 0x11, 0xa5, 0xb0,
|
||||
0x4, 0x7b, 0x1, 0x1d, 0x45, 0xc0, 0x5, 0x52, 0xe0, 0x3,
|
||||
0x22, 0x3e, 0xe2, 0x24, 0x5e, 0xe2, 0x26, 0x7e, 0xe2, 0x28,
|
||||
0x9e, 0xe2, 0x2a, 0xbe, 0xe2, 0x27, 0x6e, 0x3, 0x72, 0xf1,
|
||||
0xe2, 0x30, 0x1e, 0xe3, 0x32, 0x3e, 0xe3, 0x61, 0x71, 0xe1,
|
||||
0x28, 0x40, 0x3, 0x8c, 0x40, 0x11, 0xac, 0x90, 0x8, 0xb7,
|
||||
0xbd, 0x19, 0x7d, 0xd1, 0x13, 0x40, 0x1e, 0xe4, 0x42, 0x3e,
|
||||
0xe4, 0x44, 0x5e, 0xe4, 0x46, 0x7e, 0xe4, 0x48, 0x9e, 0xe4,
|
||||
0x4a, 0xbe, 0xe4, 0x4c, 0xde, 0xe4, 0x4e, 0xfe, 0xe4, 0x50,
|
||||
0x1e, 0xe5, 0x47, 0xbe, 0x19, 0x5b, 0x61, 0x7, 0xa7, 0x50,
|
||||
0x11, 0xc8, 0x40, 0x7, 0x4e, 0xe0, 0x15, 0x3e, 0x2e, 0x15,
|
||||
0x5e, 0xfe, 0xe5, 0x60, 0x1e, 0xe6, 0x62, 0xde, 0x15, 0x34,
|
||||
0x5e, 0xe6, 0x30, 0x7e, 0x3, 0x4f, 0x10, 0x6, 0xb0, 0xb0,
|
||||
0xb, 0x16, 0xc1, 0xc, 0x8c, 0x10, 0x5, 0x3d, 0x20, 0x13,
|
||||
0x72, 0x3e, 0xe7, 0x74, 0x5e, 0xe7, 0x76, 0x2e, 0x12, 0x41,
|
||||
0x30, 0x4, 0x7a, 0xbe, 0xe7, 0x7c, 0xde, 0xe7, 0x7e, 0xfe,
|
||||
0xe7, 0x80, 0x1e, 0xe8, 0x82, 0x3e, 0xe8, 0x7f, 0x3e, 0x5,
|
||||
0x57, 0x50, 0x5, 0x53, 0x4a, 0xe0, 0x5, 0x5d, 0x60, 0x9,
|
||||
0xd2, 0xc0, 0xe6, 0x17, 0x11, 0xb, 0xaa, 0x40, 0x6, 0x44,
|
||||
0x30, 0xe9, 0x94, 0x5e, 0xe9, 0x96, 0x7e, 0xe9, 0x98, 0x9e,
|
||||
0xe9, 0x9a, 0xbe, 0xe9, 0x9c, 0xde, 0xe9, 0x9e, 0xfe, 0xe9,
|
||||
0xa0, 0x1e, 0xea, 0x9b, 0x2e, 0x6, 0x6d, 0x50, 0xea, 0xa6,
|
||||
0x7e, 0xea, 0xa8, 0x9e, 0xea, 0xaa, 0xbe, 0xea, 0xac, 0xde,
|
||||
0xea, 0xae, 0x8e, 0xea, 0x6c, 0x10, 0x7, 0xa2, 0xe0, 0xb,
|
||||
0xa9, 0xa0, 0x9, 0xcf, 0xe0, 0xe8, 0x16, 0x11, 0x10, 00,
|
||||
0x3b, 0};
|
||||
|
||||
const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}};
|
||||
|
||||
const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}};
|
||||
|
||||
const struct httpd_fsdata_file file_logo_gif[] = {{file_index_html, data_logo_gif, data_logo_gif + 10, sizeof(data_logo_gif) - 10}};
|
||||
|
||||
#define HTTPD_FS_ROOT file_logo_gif
|
||||
|
||||
#define HTTPD_FS_NUMFILES 3
|
244
Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/httpd.c
Normal file
244
Demo/ARM9_STR91X_IAR/lwip/lwipWebServer/httpd.c
Normal file
|
@ -0,0 +1,244 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
|
||||
#include "lwip/debug.h"
|
||||
#include "lwip/stats.h"
|
||||
#include "httpd.h"
|
||||
#include "lwip/tcp.h"
|
||||
#include "fs.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#pragma pack(2)
|
||||
struct http_state {
|
||||
char *file;
|
||||
u32_t left;
|
||||
u8_t retries;
|
||||
};
|
||||
#pragma pack()
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
void conn_err(void *arg, err_t err)
|
||||
{
|
||||
struct http_state *hs;
|
||||
|
||||
hs = arg;
|
||||
mem_free(hs);
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
static void
|
||||
close_conn(struct tcp_pcb *pcb, struct http_state *hs)
|
||||
{
|
||||
tcp_arg(pcb, NULL);
|
||||
tcp_sent(pcb, NULL);
|
||||
tcp_recv(pcb, NULL);
|
||||
mem_free(hs);
|
||||
tcp_close(pcb);
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
static void
|
||||
send_data(struct tcp_pcb *pcb, struct http_state *hs)
|
||||
{
|
||||
err_t err;
|
||||
u16_t len;
|
||||
|
||||
/* We cannot send more data than space available in the send
|
||||
buffer. */
|
||||
if (tcp_sndbuf(pcb) < hs->left) {
|
||||
len = tcp_sndbuf(pcb);
|
||||
} else {
|
||||
len = hs->left;
|
||||
}
|
||||
|
||||
do {
|
||||
err = tcp_write(pcb, hs->file, len, 0);
|
||||
if (err == ERR_MEM) {
|
||||
len /= 2;
|
||||
}
|
||||
} while (err == ERR_MEM && len > 1);
|
||||
|
||||
if (err == ERR_OK) {
|
||||
hs->file += len;
|
||||
hs->left -= len;
|
||||
/* } else {
|
||||
printf("send_data: error %s len %d %d\n", lwip_strerr(err), len, tcp_sndbuf(pcb));*/
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
err_t http_poll(void *arg, struct tcp_pcb *pcb)
|
||||
{
|
||||
struct http_state *hs;
|
||||
|
||||
hs = arg;
|
||||
|
||||
/* printf("Polll\n");*/
|
||||
if (hs == NULL) {
|
||||
/* printf("Null, close\n");*/
|
||||
tcp_abort(pcb);
|
||||
return ERR_ABRT;
|
||||
} else {
|
||||
++hs->retries;
|
||||
if (hs->retries == 4) {
|
||||
tcp_abort(pcb);
|
||||
return ERR_ABRT;
|
||||
}
|
||||
send_data(pcb, hs);
|
||||
}
|
||||
|
||||
return ERR_OK;
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
err_t http_sent(void *arg, struct tcp_pcb *pcb, u16_t len)
|
||||
{
|
||||
struct http_state *hs;
|
||||
|
||||
hs = arg;
|
||||
|
||||
hs->retries = 0;
|
||||
|
||||
if (hs->left > 0) {
|
||||
send_data(pcb, hs);
|
||||
} else {
|
||||
close_conn(pcb, hs);
|
||||
}
|
||||
|
||||
return ERR_OK;
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
err_t http_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)
|
||||
{
|
||||
int i;
|
||||
char *data;
|
||||
struct fs_file file;
|
||||
struct http_state *hs;
|
||||
|
||||
hs = arg;
|
||||
|
||||
if (err == ERR_OK && p != NULL) {
|
||||
|
||||
/* Inform TCP that we have taken the data. */
|
||||
tcp_recved(pcb, p->tot_len);
|
||||
|
||||
if (hs->file == NULL) {
|
||||
data = p->payload;
|
||||
|
||||
if (strncmp(data, "GET ", 4) == 0) {
|
||||
for(i = 0; i < 40; i++) {
|
||||
if (((char *)data + 4)[i] == ' ' ||
|
||||
((char *)data + 4)[i] == '\r' ||
|
||||
((char *)data + 4)[i] == '\n') {
|
||||
((char *)data + 4)[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (*(char *)(data + 4) == '/' &&
|
||||
*(char *)(data + 5) == 0) {
|
||||
fs_open("/index.html", &file);
|
||||
}
|
||||
else {
|
||||
if (!fs_open((char *)data + 4, &file)) {
|
||||
fs_open("/404.html", &file);
|
||||
}
|
||||
}
|
||||
hs->file = file.data;
|
||||
hs->left = file.len;
|
||||
/* printf("data %p len %ld\n", hs->file, hs->left);*/
|
||||
|
||||
pbuf_free(p);
|
||||
send_data(pcb, hs);
|
||||
|
||||
/* Tell TCP that we wish be to informed of data that has been
|
||||
successfully sent by a call to the http_sent() function. */
|
||||
tcp_sent(pcb, http_sent);
|
||||
} else {
|
||||
pbuf_free(p);
|
||||
close_conn(pcb, hs);
|
||||
}
|
||||
} else {
|
||||
pbuf_free(p);
|
||||
}
|
||||
}
|
||||
|
||||
if (err == ERR_OK && p == NULL) {
|
||||
close_conn(pcb, hs);
|
||||
}
|
||||
return ERR_OK;
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
err_t http_accept(void *arg, struct tcp_pcb *pcb, err_t err)
|
||||
{
|
||||
struct http_state *hs;
|
||||
|
||||
tcp_setprio(pcb, TCP_PRIO_MIN);
|
||||
|
||||
/* Allocate memory for the structure that holds the state of the
|
||||
connection. */
|
||||
hs = mem_malloc(sizeof(struct http_state));
|
||||
|
||||
if (hs == NULL) {
|
||||
// printf("http_accept: Out of memory\n");
|
||||
return ERR_MEM;
|
||||
}
|
||||
|
||||
/* Initialize the structure. */
|
||||
hs->file = NULL;
|
||||
hs->left = 0;
|
||||
hs->retries = 0;
|
||||
|
||||
/* Tell TCP that this is the structure we wish to be passed for our
|
||||
callbacks. */
|
||||
tcp_arg(pcb, hs);
|
||||
|
||||
|
||||
/* Tell TCP that we wish to be informed of incoming data by a call
|
||||
to the http_recv() function. */
|
||||
tcp_recv(pcb, http_recv);
|
||||
|
||||
tcp_err(pcb, conn_err);
|
||||
|
||||
tcp_poll(pcb, http_poll, 4);
|
||||
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
void httpd_init(void)
|
||||
{
|
||||
struct tcp_pcb *pcb;
|
||||
|
||||
pcb = tcp_new();
|
||||
tcp_bind(pcb, NULL, 80);
|
||||
pcb = tcp_listen(pcb);
|
||||
tcp_accept(pcb, http_accept);
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
|
436
Demo/ARM9_STR91X_IAR/lwip/netif/ethernetif.c
Normal file
436
Demo/ARM9_STR91X_IAR/lwip/netif/ethernetif.c
Normal file
|
@ -0,0 +1,436 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
* OF SUCH DAMAGE.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is a skeleton for developing Ethernet network interface
|
||||
* drivers for lwIP. Add code to the low_level functions and do a
|
||||
* search-and-replace for the word "ethernetif" to replace it with
|
||||
* something that better describes your network interface.
|
||||
*/
|
||||
|
||||
#include "lwip/opt.h"
|
||||
#include "lwip/def.h"
|
||||
#include "lwip/mem.h"
|
||||
#include "lwip/pbuf.h"
|
||||
#include "lwip/sys.h"
|
||||
#include <lwip/stats.h>
|
||||
|
||||
#include "netif/etharp.h"
|
||||
#include "91x_enet.h"
|
||||
|
||||
// Standard library include
|
||||
#include <string.h>
|
||||
|
||||
#define netifMTU ( 1500 )
|
||||
#define netifINTERFACE_TASK_STACK_SIZE ( 350 )
|
||||
#define netifINTERFACE_TASK_PRIORITY ( configMAX_PRIORITIES - 1 )
|
||||
#define netifGUARD_BLOCK_TIME ( 250 )
|
||||
#define IFNAME0 'e'
|
||||
#define IFNAME1 'm'
|
||||
|
||||
/* The time to block waiting for input. */
|
||||
#define emacBLOCK_TIME_WAITING_FOR_INPUT ( ( portTickType ) 100 )
|
||||
|
||||
/* Interrupt status bit definition. */
|
||||
#define DMI_RX_CURRENT_DONE 0x8000
|
||||
|
||||
extern u8 TxBuff[1520];
|
||||
|
||||
static u8_t s_rxBuff[1520];
|
||||
|
||||
/* The semaphore used by the ISR to wake the lwIP task. */
|
||||
static xSemaphoreHandle s_xSemaphore = NULL;
|
||||
|
||||
struct ethernetif {
|
||||
struct eth_addr *ethaddr;
|
||||
/* Add whatever per-interface state that is needed here. */
|
||||
};
|
||||
|
||||
static struct netif *s_pxNetIf = NULL;
|
||||
|
||||
/* Forward declarations. */
|
||||
static err_t ethernetif_output(struct netif *netif, struct pbuf *p, struct ip_addr *ipaddr);
|
||||
static void ethernetif_input( void * pvParameters );
|
||||
static void vEMACWaitForInput( void );
|
||||
|
||||
|
||||
|
||||
static void low_level_init(struct netif *netif)
|
||||
{
|
||||
/* set MAC hardware address length */
|
||||
netif->hwaddr_len = 6;
|
||||
|
||||
/* set MAC hardware address */
|
||||
netif->hwaddr[0] = MAC_ADDR0;
|
||||
netif->hwaddr[1] = MAC_ADDR1;
|
||||
netif->hwaddr[2] = MAC_ADDR2;
|
||||
netif->hwaddr[3] = MAC_ADDR3;
|
||||
netif->hwaddr[4] = MAC_ADDR4;
|
||||
netif->hwaddr[5] = MAC_ADDR5;
|
||||
|
||||
/* maximum transfer unit */
|
||||
netif->mtu = netifMTU;
|
||||
|
||||
/* broadcast capability */
|
||||
netif->flags = NETIF_FLAG_BROADCAST;
|
||||
|
||||
s_pxNetIf = netif;
|
||||
|
||||
if( s_xSemaphore == NULL )
|
||||
{
|
||||
vSemaphoreCreateBinary( s_xSemaphore );
|
||||
xSemaphoreTake( s_xSemaphore, 0);
|
||||
}
|
||||
|
||||
/* Do whatever else is needed to initialize interface. */
|
||||
/* Initialise the MAC. */
|
||||
ENET_InitClocksGPIO();
|
||||
ENET_Init();
|
||||
ENET_Start();
|
||||
|
||||
portENTER_CRITICAL();
|
||||
{
|
||||
/*set MAC physical*/
|
||||
ENET_MAC->MAH = (MAC_ADDR5<<8) + MAC_ADDR4;
|
||||
ENET_MAC->MAL = (MAC_ADDR3<<24) + (MAC_ADDR2<<16) + (MAC_ADDR1<<8) + MAC_ADDR0;
|
||||
|
||||
VIC_Config( ENET_ITLine, VIC_IRQ, 1 );
|
||||
VIC_ITCmd( ENET_ITLine, ENABLE );
|
||||
ENET_DMA->ISR = DMI_RX_CURRENT_DONE;
|
||||
ENET_DMA->IER = DMI_RX_CURRENT_DONE;
|
||||
}
|
||||
portEXIT_CRITICAL();
|
||||
|
||||
/* Create the task that handles the EMAC. */
|
||||
xTaskCreate( ethernetif_input, ( signed portCHAR * ) "ETH_INT", netifINTERFACE_TASK_STACK_SIZE, NULL, netifINTERFACE_TASK_PRIORITY, NULL );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* low_level_output():
|
||||
*
|
||||
* Should do the actual transmission of the packet. The packet is
|
||||
* contained in the pbuf that is passed to the function. This pbuf
|
||||
* might be chained.
|
||||
*
|
||||
*/
|
||||
|
||||
static err_t low_level_output(struct netif *netif, struct pbuf *p)
|
||||
{
|
||||
static xSemaphoreHandle xTxSemaphore = NULL;
|
||||
struct pbuf *q;
|
||||
u32_t l = 0;
|
||||
|
||||
if( xTxSemaphore == NULL )
|
||||
{
|
||||
vSemaphoreCreateBinary( xTxSemaphore );
|
||||
}
|
||||
|
||||
|
||||
#if ETH_PAD_SIZE
|
||||
pbuf_header(p, -ETH_PAD_SIZE); /* drop the padding word */
|
||||
#endif
|
||||
|
||||
|
||||
/* Access to the EMAC is guarded using a semaphore. */
|
||||
if( xSemaphoreTake( xTxSemaphore, netifGUARD_BLOCK_TIME ) )
|
||||
{
|
||||
for(q = p; q != NULL; q = q->next) {
|
||||
/* Send the data from the pbuf to the interface, one pbuf at a
|
||||
time. The size of the data in each pbuf is kept in the ->len
|
||||
variable. */
|
||||
memcpy(&TxBuff[l], (u8_t*)q->payload, q->len);
|
||||
l += q->len;
|
||||
}
|
||||
|
||||
ENET_TxPkt(0, l);
|
||||
|
||||
#if ETH_PAD_SIZE
|
||||
pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */
|
||||
#endif
|
||||
|
||||
#if LINK_STATS
|
||||
lwip_stats.link.xmit++;
|
||||
#endif /* LINK_STATS */
|
||||
|
||||
xSemaphoreGive( xTxSemaphore );
|
||||
}
|
||||
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* low_level_input():
|
||||
*
|
||||
* Should allocate a pbuf and transfer the bytes of the incoming
|
||||
* packet from the interface into the pbuf.
|
||||
*
|
||||
*/
|
||||
|
||||
static struct pbuf *
|
||||
low_level_input(struct netif *netif)
|
||||
{
|
||||
static xSemaphoreHandle xRxSemaphore = NULL;
|
||||
struct pbuf *p, *q;
|
||||
u16_t len, l;
|
||||
|
||||
l = 0;
|
||||
p = NULL;
|
||||
|
||||
if( xRxSemaphore == NULL )
|
||||
{
|
||||
vSemaphoreCreateBinary( xRxSemaphore );
|
||||
}
|
||||
|
||||
/* Access to the emac is guarded using a semaphore. */
|
||||
if( xSemaphoreTake( xRxSemaphore, netifGUARD_BLOCK_TIME ) )
|
||||
{
|
||||
/* Obtain the size of the packet and put it into the "len"
|
||||
variable. */
|
||||
len = ENET_HandleRxPkt(s_rxBuff);
|
||||
|
||||
if(len)
|
||||
{
|
||||
#if ETH_PAD_SIZE
|
||||
len += ETH_PAD_SIZE; /* allow room for Ethernet padding */
|
||||
#endif
|
||||
|
||||
/* We allocate a pbuf chain of pbufs from the pool. */
|
||||
p = pbuf_alloc(PBUF_RAW, len, PBUF_POOL);
|
||||
|
||||
if (p != NULL) {
|
||||
|
||||
#if ETH_PAD_SIZE
|
||||
pbuf_header(p, -ETH_PAD_SIZE); /* drop the padding word */
|
||||
#endif
|
||||
|
||||
/* We iterate over the pbuf chain until we have read the entire
|
||||
* packet into the pbuf. */
|
||||
for(q = p; q != NULL; q = q->next) {
|
||||
/* Read enough bytes to fill this pbuf in the chain. The
|
||||
* available data in the pbuf is given by the q->len
|
||||
* variable. */
|
||||
memcpy((u8_t*)q->payload, &s_rxBuff[l], q->len);
|
||||
l = l + q->len;
|
||||
}
|
||||
|
||||
|
||||
#if ETH_PAD_SIZE
|
||||
pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */
|
||||
#endif
|
||||
|
||||
#if LINK_STATS
|
||||
lwip_stats.link.recv++;
|
||||
#endif /* LINK_STATS */
|
||||
} else {
|
||||
#if LINK_STATS
|
||||
lwip_stats.link.memerr++;
|
||||
lwip_stats.link.drop++;
|
||||
#endif /* LINK_STATS */
|
||||
} /* End else */
|
||||
} /* End if */
|
||||
|
||||
xSemaphoreGive( xRxSemaphore );
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
/*
|
||||
* ethernetif_output():
|
||||
*
|
||||
* This function is called by the TCP/IP stack when an IP packet
|
||||
* should be sent. It calls the function called low_level_output() to
|
||||
* do the actual transmission of the packet.
|
||||
*
|
||||
*/
|
||||
|
||||
static err_t ethernetif_output(struct netif *netif, struct pbuf *p, struct ip_addr *ipaddr)
|
||||
{
|
||||
|
||||
/* resolve hardware address, then send (or queue) packet */
|
||||
return etharp_output(netif, ipaddr, p);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* ethernetif_input():
|
||||
*
|
||||
* This function should be called when a packet is ready to be read
|
||||
* from the interface. It uses the function low_level_input() that
|
||||
* should handle the actual reception of bytes from the network
|
||||
* interface.
|
||||
*
|
||||
*/
|
||||
|
||||
static void ethernetif_input( void * pvParameters )
|
||||
{
|
||||
struct ethernetif *ethernetif;
|
||||
struct eth_hdr *ethhdr;
|
||||
struct pbuf *p;
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
do
|
||||
{
|
||||
ethernetif = s_pxNetIf->state;
|
||||
|
||||
/* move received packet into a new pbuf */
|
||||
p = low_level_input( s_pxNetIf );
|
||||
|
||||
if( p == NULL )
|
||||
{
|
||||
/* No packet could be read. Wait a for an interrupt to tell us
|
||||
there is more data available. */
|
||||
vEMACWaitForInput();
|
||||
}
|
||||
|
||||
} while( p == NULL );
|
||||
|
||||
/* points to packet payload, which starts with an Ethernet header */
|
||||
ethhdr = p->payload;
|
||||
|
||||
#if LINK_STATS
|
||||
lwip_stats.link.recv++;
|
||||
#endif /* LINK_STATS */
|
||||
|
||||
ethhdr = p->payload;
|
||||
|
||||
switch (htons(ethhdr->type))
|
||||
{
|
||||
/* IP packet? */
|
||||
case ETHTYPE_IP:
|
||||
/* update ARP table */
|
||||
etharp_ip_input(s_pxNetIf, p);
|
||||
/* skip Ethernet header */
|
||||
pbuf_header(p, (s16_t)-sizeof(struct eth_hdr));
|
||||
/* pass to network layer */
|
||||
s_pxNetIf->input(p, s_pxNetIf);
|
||||
break;
|
||||
|
||||
case ETHTYPE_ARP:
|
||||
/* pass p to ARP module */
|
||||
etharp_arp_input(s_pxNetIf, ethernetif->ethaddr, p);
|
||||
break;
|
||||
|
||||
default:
|
||||
pbuf_free(p);
|
||||
p = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
arp_timer(void *arg)
|
||||
{
|
||||
etharp_tmr();
|
||||
sys_timeout(ARP_TMR_INTERVAL, arp_timer, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* ethernetif_init():
|
||||
*
|
||||
* Should be called at the beginning of the program to set up the
|
||||
* network interface. It calls the function low_level_init() to do the
|
||||
* actual setup of the hardware.
|
||||
*
|
||||
*/
|
||||
|
||||
err_t
|
||||
ethernetif_init(struct netif *netif)
|
||||
{
|
||||
struct ethernetif *ethernetif;
|
||||
|
||||
ethernetif = mem_malloc(sizeof(struct ethernetif));
|
||||
|
||||
if (ethernetif == NULL)
|
||||
{
|
||||
LWIP_DEBUGF(NETIF_DEBUG, ("ethernetif_init: out of memory\n"));
|
||||
return ERR_MEM;
|
||||
}
|
||||
|
||||
#if LWIP_SNMP
|
||||
/* ifType ethernetCsmacd(6) @see RFC1213 */
|
||||
netif->link_type = 6;
|
||||
/* your link speed here */
|
||||
netif->link_speed = ;
|
||||
netif->ts = 0;
|
||||
netif->ifinoctets = 0;
|
||||
netif->ifinucastpkts = 0;
|
||||
netif->ifinnucastpkts = 0;
|
||||
netif->ifindiscards = 0;
|
||||
netif->ifoutoctets = 0;
|
||||
netif->ifoutucastpkts = 0;
|
||||
netif->ifoutnucastpkts = 0;
|
||||
netif->ifoutdiscards = 0;
|
||||
#endif
|
||||
|
||||
netif->state = ethernetif;
|
||||
netif->name[0] = IFNAME0;
|
||||
netif->name[1] = IFNAME1;
|
||||
netif->output = ethernetif_output;
|
||||
netif->linkoutput = low_level_output;
|
||||
|
||||
ethernetif->ethaddr = (struct eth_addr *)&(netif->hwaddr[0]);
|
||||
|
||||
low_level_init(netif);
|
||||
|
||||
etharp_init();
|
||||
|
||||
sys_timeout(ARP_TMR_INTERVAL, arp_timer, NULL);
|
||||
|
||||
return ERR_OK;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void ENET_IRQHandler(void)
|
||||
{
|
||||
portBASE_TYPE xSwitchRequired;
|
||||
|
||||
/* Give the semaphore in case the lwIP task needs waking. */
|
||||
xSwitchRequired = xSemaphoreGiveFromISR( s_xSemaphore, pdFALSE );
|
||||
|
||||
/* Clear the interrupt. */
|
||||
ENET_DMA->ISR = DMI_RX_CURRENT_DONE;
|
||||
|
||||
/* Switch tasks if necessary. */
|
||||
portEND_SWITCHING_ISR( xSwitchRequired );
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void vEMACWaitForInput( void )
|
||||
{
|
||||
/* Just wait until we are signled from an ISR that data is available, or
|
||||
we simply time out. */
|
||||
xSemaphoreTake( s_xSemaphore, emacBLOCK_TIME_WAITING_FOR_INPUT );
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
FreeRTOS.org V4.4.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.5.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
|
@ -46,27 +46,27 @@
|
|||
* documentation provides more details of the demo application tasks.
|
||||
*
|
||||
* A few tasks are created that are not part of the standard demo. These are
|
||||
* the 'LCD' task, the 'LCD Message' task, a WEB server task and the 'Check'
|
||||
* the 'LCD' task, the 'LCD Message' task, a WEB server task and the 'Check'
|
||||
* task.
|
||||
*
|
||||
* The LCD task is the only task that accesses the LCD directly, so mutual
|
||||
* exclusion is ensured. Any task wishing to display text sends the LCD task
|
||||
* a message containing a pointer to the string that should be displayed.
|
||||
* The LCD task itself just blocks on a queue waiting for such a message to
|
||||
* The LCD task itself just blocks on a queue waiting for such a message to
|
||||
* arrive - processing each in turn.
|
||||
*
|
||||
* The LCD Message task does nothing other than periodically send messages to
|
||||
* the LCD task. The messages originating from the LCD Message task are
|
||||
* the LCD task. The messages originating from the LCD Message task are
|
||||
* displayed on the top row of the LCD.
|
||||
*
|
||||
* The Check task only executes every three seconds but has the highest
|
||||
* priority so is guaranteed to get processor time. Its main function is to
|
||||
* check that all the other tasks are still operational. Most tasks maintain
|
||||
* a unique count that is incremented each time the task successfully completes
|
||||
* a cycle of its function. Should any error occur within such a task the
|
||||
* The Check task only executes every three seconds but has the highest
|
||||
* priority so is guaranteed to get processor time. Its main function is to
|
||||
* check that all the other tasks are still operational. Most tasks maintain
|
||||
* a unique count that is incremented each time the task successfully completes
|
||||
* a cycle of its function. Should any error occur within such a task the
|
||||
* count is permanently halted. The check task sets a bit in an error status
|
||||
* flag should it find any counter variable at a value that indicates an
|
||||
* error has occurred. The error flag value is converted to a string and sent
|
||||
* error has occurred. The error flag value is converted to a string and sent
|
||||
* to the LCD task for display on the bottom row on the LCD.
|
||||
*/
|
||||
|
||||
|
@ -93,6 +93,13 @@
|
|||
#include "flop.h"
|
||||
#include "comtest2.h"
|
||||
#include "serial.h"
|
||||
#include "GenQTest.h"
|
||||
#include "QPeek.h"
|
||||
|
||||
#ifdef STACK_LWIP
|
||||
#include "BasicWEB.h"
|
||||
#include "sys.h"
|
||||
#endif
|
||||
|
||||
/* Priorities for the demo application tasks. */
|
||||
#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||
|
@ -103,6 +110,7 @@
|
|||
#define mainCOM_TEST_PRIORITY ( tskIDLE_PRIORITY + 3 )
|
||||
#define mainLCD_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||
#define mainMSG_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 )
|
||||
#define mainGENERIC_QUEUE_PRIORITY ( tskIDLE_PRIORITY )
|
||||
|
||||
/* Delays used by the various tasks defined in this file. */
|
||||
#define mainCHECK_PERIOD ( ( portTickType ) 3000 / portTICK_RATE_MS )
|
||||
|
@ -145,11 +153,14 @@ static void prvSetupHardware( void );
|
|||
*/
|
||||
static void prvCheckOtherTasksAreStillRunning( void );
|
||||
|
||||
/*
|
||||
* The WEB server task prototype. The task is created in this file but defined
|
||||
* elsewhere.
|
||||
*/
|
||||
extern void vuIP_Task(void *pvParameters);
|
||||
#ifdef STACK_UIP
|
||||
/*
|
||||
* The WEB server task prototype. The task is created in this file but defined
|
||||
* elsewhere. STACK_UIP is defined when the uIP stack is used in preference
|
||||
* to the lwIP stack.
|
||||
*/
|
||||
extern void vuIP_Task(void *pvParameters);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The task that displays text on the LCD.
|
||||
|
@ -183,10 +194,9 @@ void main( void )
|
|||
/* Setup any hardware that has not already been configured by the low
|
||||
level init routines. */
|
||||
prvSetupHardware();
|
||||
|
||||
/* Create the queue used to send data to the LCD task. */
|
||||
xLCDQueue = xQueueCreate( mainLCD_QUEUE_LEN, sizeof( xLCDMessage ) );
|
||||
|
||||
|
||||
/* Start all the standard demo application tasks. */
|
||||
vStartIntegerMathTasks( tskIDLE_PRIORITY );
|
||||
vStartLEDFlashTasks( mainLED_TASK_PRIORITY );
|
||||
|
@ -196,15 +206,27 @@ void main( void )
|
|||
vStartDynamicPriorityTasks();
|
||||
vStartMathTasks( tskIDLE_PRIORITY );
|
||||
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
|
||||
vStartGenericQueueTasks( mainGENERIC_QUEUE_PRIORITY );
|
||||
vStartQueuePeekTasks();
|
||||
|
||||
/* Start the tasks which are defined in this file. */
|
||||
xTaskCreate( vErrorChecks, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
|
||||
xTaskCreate( prvLCDTask, "LCD", configMINIMAL_STACK_SIZE, ( void * ) &xLCDQueue, mainLCD_TASK_PRIORITY, NULL );
|
||||
xTaskCreate( prvLCDMessageTask, "MSG", configMINIMAL_STACK_SIZE, ( void * ) &xLCDQueue, mainMSG_TASK_PRIORITY, NULL );
|
||||
|
||||
/* Finally, create the WEB server task. */
|
||||
xTaskCreate( vuIP_Task, "uIP", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY - 1, NULL );
|
||||
|
||||
/* Start either the uIP TCP/IP stack or the lwIP TCP/IP stack. */
|
||||
#ifdef STACK_UIP
|
||||
/* Finally, create the WEB server task. */
|
||||
xTaskCreate( vuIP_Task, "uIP", configMINIMAL_STACK_SIZE * 3, NULL, mainCHECK_TASK_PRIORITY - 1, NULL );
|
||||
#endif
|
||||
|
||||
#ifdef STACK_LWIP
|
||||
/* Create the lwIP task. This uses the lwIP RTOS abstraction layer.*/
|
||||
vlwIPInit();
|
||||
sys_set_state( ( signed portCHAR * ) "httpd", lwipBASIC_SERVER_STACK_SIZE );
|
||||
sys_thread_new( vBasicWEBServer, ( void * ) NULL, basicwebWEBSERVER_PRIORITY );
|
||||
sys_set_default_state();
|
||||
#endif
|
||||
|
||||
/* Start the scheduler.
|
||||
|
||||
|
@ -226,14 +248,14 @@ static void prvSetupHardware( void )
|
|||
/* Configuration taken from the ST code.
|
||||
|
||||
Set Flash banks size & address */
|
||||
FMI_BankRemapConfig( 4, 2, 0, 0x80000 );
|
||||
FMI_BankRemapConfig( 4, 2, 0, 0x80000 );
|
||||
|
||||
/* FMI Waite States */
|
||||
FMI_Config( FMI_READ_WAIT_STATE_2, FMI_WRITE_WAIT_STATE_0, FMI_PWD_ENABLE, FMI_LVD_ENABLE, FMI_FREQ_HIGH );
|
||||
FMI_Config( FMI_READ_WAIT_STATE_2, FMI_WRITE_WAIT_STATE_0, FMI_PWD_ENABLE, FMI_LVD_ENABLE, FMI_FREQ_HIGH );
|
||||
|
||||
/* Configure the FPLL = 96MHz, and APB to 48MHz. */
|
||||
SCU_PCLKDivisorConfig( SCU_PCLK_Div2 );
|
||||
SCU_PLLFactorsConfig( 192, 25, 2 );
|
||||
SCU_PLLFactorsConfig( 192, 25, 2 );
|
||||
SCU_PLLCmd( ENABLE );
|
||||
SCU_MCLKSourceConfig( SCU_MCLK_PLL );
|
||||
|
||||
|
@ -269,16 +291,15 @@ portCHAR *pcStringsToDisplay[] = {
|
|||
|
||||
/* The parameters are not used in this task. */
|
||||
( void ) pvParameters;
|
||||
|
||||
pcFlagString = &cCheckVal[ 0 ];
|
||||
|
||||
|
||||
/* Initialise xLastWakeTime to ensure the first call to vTaskDelayUntil()
|
||||
functions correctly. */
|
||||
xLastWakeTime = xTaskGetTickCount();
|
||||
|
||||
/* Cycle for ever, delaying then checking all the other tasks are still
|
||||
operating without error. */
|
||||
|
||||
for( ;; )
|
||||
{
|
||||
/* Delay until it is time to execute again. */
|
||||
|
@ -339,6 +360,17 @@ static void prvCheckOtherTasksAreStillRunning( void )
|
|||
{
|
||||
ulErrorFlags |= 0x40;
|
||||
}
|
||||
|
||||
if( xAreGenericQueueTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
ulErrorFlags |= 0x80;
|
||||
}
|
||||
|
||||
if( xAreQueuePeekTasksStillRunning() != pdTRUE )
|
||||
{
|
||||
ulErrorFlags |= 0x100;
|
||||
}
|
||||
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
|
@ -401,7 +433,7 @@ portCHAR *pcString;
|
|||
|
||||
LCD_Init();
|
||||
|
||||
for( ;; )
|
||||
for( ;; )
|
||||
{
|
||||
/* Wait for a message to arrive. */
|
||||
if( xQueueReceive( *pxLCDQueue, &xReceivedMessage, portMAX_DELAY ) )
|
||||
|
@ -411,11 +443,10 @@ portCHAR *pcString;
|
|||
LCD_DisplayString(xReceivedMessage.xRow, pcString, BlackText);
|
||||
|
||||
/* The delay here is just to ensure the LCD task does not starve
|
||||
out lower priority tasks as writhing to the LCD can take a long
|
||||
out lower priority tasks as writing to the LCD can take a long
|
||||
time. */
|
||||
vTaskDelay( mainLCD_DELAY );
|
||||
}
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
FreeRTOS.org V4.4.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.5.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS distribution.
|
||||
|
||||
|
@ -121,27 +121,27 @@ GPIO_InitTypeDef GPIO_InitStructure;
|
|||
/* Enable the GPIO3 Clock */
|
||||
SCU_APBPeriphClockConfig( __GPIO3, ENABLE );
|
||||
|
||||
/* Configure UART1_Rx pin GPIO3.2 */
|
||||
GPIO_InitStructure.GPIO_Direction = GPIO_PinInput;
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
|
||||
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ;
|
||||
GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable;
|
||||
GPIO_InitStructure.GPIO_Alternate = GPIO_InputAlt1 ;
|
||||
GPIO_Init( GPIO3, &GPIO_InitStructure );
|
||||
/* Configure UART1_Rx pin GPIO3.2 */
|
||||
GPIO_InitStructure.GPIO_Direction = GPIO_PinInput;
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
|
||||
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ;
|
||||
GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable;
|
||||
GPIO_InitStructure.GPIO_Alternate = GPIO_InputAlt1 ;
|
||||
GPIO_Init( GPIO3, &GPIO_InitStructure );
|
||||
|
||||
/* Configure UART1_Tx pin GPIO3.3 */
|
||||
GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput;
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
|
||||
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ;
|
||||
GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable;
|
||||
GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt2 ;
|
||||
GPIO_Init( GPIO3, &GPIO_InitStructure );
|
||||
/* Configure UART1_Tx pin GPIO3.3 */
|
||||
GPIO_InitStructure.GPIO_Direction = GPIO_PinOutput;
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
|
||||
GPIO_InitStructure.GPIO_Type = GPIO_Type_PushPull ;
|
||||
GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable;
|
||||
GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt2 ;
|
||||
GPIO_Init( GPIO3, &GPIO_InitStructure );
|
||||
|
||||
|
||||
portENTER_CRITICAL();
|
||||
{
|
||||
/* Configure the UART itself. */
|
||||
UART_DeInit( UART1 );
|
||||
UART_DeInit( UART1 );
|
||||
UART_Init( UART1, &xUART1_Init );
|
||||
UART_ITConfig( UART1, UART_IT_Receive | UART_IT_Transmit, ENABLE );
|
||||
UART1->ICR = serCLEAR_ALL_INTERRUPTS;
|
||||
|
@ -220,14 +220,14 @@ portBASE_TYPE xReturn;
|
|||
if( UART1->FR & serTX_FIFO_FULL )
|
||||
{
|
||||
/* Wait for the interrupt letting us know there is space on the
|
||||
FIFO. It is ok to block in a critical section, interrupts will be
|
||||
FIFO. It is ok to block in a critical section, interrupts will be
|
||||
enabled for other tasks once we force a switch. */
|
||||
lTaskWaiting = pdTRUE;
|
||||
|
||||
/* Just to be a bit different this driver uses a semaphore to
|
||||
/* Just to be a bit different this driver uses a semaphore to
|
||||
block the sending task when the FIFO is full. The standard COMTest
|
||||
task assumes a queue of adequate length exists so does not use
|
||||
a block time. For this demo the block time is therefore hard
|
||||
a block time. For this demo the block time is therefore hard
|
||||
coded. */
|
||||
xReturn = xSemaphoreTake( xTxFIFOSemaphore, serTX_BLOCK_TIME );
|
||||
if( xReturn )
|
||||
|
|
32
Demo/ARM9_STR91X_IAR/settings/RTOSDemo.cspy.bat
Normal file
32
Demo/ARM9_STR91X_IAR/settings/RTOSDemo.cspy.bat
Normal file
|
@ -0,0 +1,32 @@
|
|||
@REM This bat file has been generated by the IAR Embeddded Workbench
|
||||
@REM C-SPY interactive debugger,as an aid to preparing a command
|
||||
@REM line for running the cspybat command line utility with the
|
||||
@REM appropriate settings.
|
||||
@REM
|
||||
@REM After making some adjustments to this file, you can launch cspybat
|
||||
@REM by typing the name of this file followed by the name of the debug
|
||||
@REM file (usually an ubrof file). Note that this file is generated
|
||||
@REM every time a new debug session is initialized, so you may want to
|
||||
@REM move or rename the file before making changes.
|
||||
@REM
|
||||
@REM Note: some command line arguments cannot be properly generated
|
||||
@REM by this process. Specifically, the plugin which is responsible
|
||||
@REM for the Terminal I/O window (and other C runtime functionality)
|
||||
@REM comes in a special version for cspybat, and the name of that
|
||||
@REM plugin dll is not known when generating this file. It resides in
|
||||
@REM the $TOOLKIT_DIR$\bin folder and is usually called XXXbat.dll or
|
||||
@REM XXXlibsupportbat.dll, where XXX is the name of the corresponding
|
||||
@REM tool chain. Replace the '<libsupport_plugin>' parameter
|
||||
@REM below with the appropriate file name. Other plugins loaded by
|
||||
@REM C-SPY are usually not needed by, or will not work in, cspybat
|
||||
@REM but they are listed at the end of this file for reference.
|
||||
|
||||
|
||||
"C:\Devtools\IAR Systems\Embedded Workbench 4.0\common\bin\cspybat" "C:\Devtools\IAR Systems\Embedded Workbench 4.0\ARM\bin\armproc.dll" "C:\Devtools\IAR Systems\Embedded Workbench 4.0\ARM\bin\armjlink.dll" %1 --plugin "C:\Devtools\IAR Systems\Embedded Workbench 4.0\ARM\bin\<libsupport_plugin>" --backend -B "--endian" "little" "--cpu" "ARM966E-S" "--fpu" "None" "--proc_device_desc_file" "C:\Devtools\IAR Systems\Embedded Workbench 4.0\ARM\CONFIG\iostr912.ddf" "--drv_verify_download" "all" "--proc_driver" "jlink" "--jlink_connection" "USB:0" "--jlink_initial_speed" "32" "--jlink_catch_exceptions" "0x000"
|
||||
|
||||
|
||||
@REM Loaded plugins:
|
||||
@REM armlibsupport.dll
|
||||
@REM C:\Devtools\IAR Systems\Embedded Workbench 4.0\common\plugins\CodeCoverage\CodeCoverage.dll
|
||||
@REM C:\Devtools\IAR Systems\Embedded Workbench 4.0\common\plugins\Profiling\Profiling.dll
|
||||
@REM C:\Devtools\IAR Systems\Embedded Workbench 4.0\common\plugins\stack\stack.dll
|
|
@ -3,20 +3,20 @@
|
|||
<Project>
|
||||
<Desktop>
|
||||
<Static>
|
||||
<Debug-Log><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows></Debug-Log>
|
||||
<Debug-Log/>
|
||||
<Build>
|
||||
|
||||
|
||||
|
||||
|
||||
<ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1006</ColumnWidth1><ColumnWidth2>268</ColumnWidth2><ColumnWidth3>67</ColumnWidth3></Build>
|
||||
<Workspace>
|
||||
<ColumnWidths>
|
||||
|
||||
|
||||
|
||||
|
||||
<Column0>186</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
|
||||
<PreferedWindows>
|
||||
|
||||
|
||||
|
||||
|
||||
<Position>1</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows>
|
||||
<Column0>252</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
|
||||
</Workspace>
|
||||
<Disassembly>
|
||||
<PreferedWindows>
|
||||
|
@ -29,48 +29,52 @@
|
|||
|
||||
|
||||
<MixedMode>1</MixedMode><CodeCovEnabled>0</CodeCovEnabled><CodeCovShow>0</CodeCovShow></Disassembly>
|
||||
<Build>
|
||||
<ColumnWidth0>20</ColumnWidth0>
|
||||
<ColumnWidth1>1004</ColumnWidth1>
|
||||
<ColumnWidth2>267</ColumnWidth2>
|
||||
<ColumnWidth3>66</ColumnWidth3>
|
||||
<PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows><Window><Factory>Debug-Log</Factory></Window><Window><Factory>Breakpoints</Factory></Window></Windows></PreferedWindows></Build>
|
||||
<Register>
|
||||
<PreferedWindows>
|
||||
|
||||
|
||||
|
||||
|
||||
<Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows>
|
||||
</Register>
|
||||
<Watch>
|
||||
<Format>
|
||||
<struct_types><Fmt><Key>ENET_DMADSCRBase-dmaPackStatus</Key><Value>4</Value></Fmt><Fmt><Key>GPIO_TypeDef-DDR</Key><Value>4</Value></Fmt></struct_types>
|
||||
<watch_formats><Fmt><Key>{W}Watch-0:ENET_DMA->ISR</Key><Value>4</Value></Fmt><Fmt><Key>{W}Watch-1:ENET_DMA->ISR</Key><Value>4</Value></Fmt><Fmt><Key>{W}Watch-1:ulLinkAbilityReg</Key><Value>4</Value></Fmt><Fmt><Key>{W}Watch-1:ulStatusReg</Key><Value>4</Value></Fmt><Fmt><Key>{W}Watch-2: ulHigh</Key><Value>4</Value></Fmt><Fmt><Key>{W}Watch-2:ulLow</Key><Value>4</Value></Fmt></watch_formats>
|
||||
</Format>
|
||||
|
||||
|
||||
|
||||
|
||||
<PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><Column0>145</Column0><Column1>102</Column1><Column2>133</Column2><Column3>100</Column3></Watch>
|
||||
<Breakpoints><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows></Breakpoints><Find-in-Files><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><ColumnWidth0>482</ColumnWidth0><ColumnWidth1>68</ColumnWidth1><ColumnWidth2>826</ColumnWidth2></Find-in-Files><CallStack><PreferedWindows><Position>1</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><ViewArgs>1</ViewArgs></CallStack><Memory><PreferedWindows><Position>3</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><FindDirection>1</FindDirection><FindAsHex>0</FindAsHex></Memory><QuickWatch><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows><Column0>100</Column0><Column1>116</Column1><Column2>100</Column2><Column3>100</Column3></QuickWatch></Static>
|
||||
<Register><PreferedWindows><Position>2</Position><ScreenPosX>0</ScreenPosX><ScreenPosY>0</ScreenPosY><Windows/></PreferedWindows></Register><Find-in-Files><ColumnWidth0>482</ColumnWidth0><ColumnWidth1>68</ColumnWidth1><ColumnWidth2>826</ColumnWidth2></Find-in-Files></Static>
|
||||
<Windows>
|
||||
|
||||
|
||||
<Wnd2><Tabs><Tab><Identity>TabID-14723-2909</Identity><TabName>Workspace</TabName><Factory>Workspace</Factory><Session><NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source</ExpandedNode><ExpandedNode>RTOSDemo/RTOS Source</ExpandedNode><ExpandedNode>RTOSDemo/System Files</ExpandedNode><ExpandedNode>RTOSDemo/uIP</ExpandedNode></NodeDict></Session></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd2><Wnd3><Tabs><Tab><Identity>TabID-596-3113</Identity><TabName>Debug Log</TabName><Factory>Debug-Log</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd3></Windows>
|
||||
<Wnd1>
|
||||
<Tabs>
|
||||
<Tab>
|
||||
<Identity>TabID-874-7293</Identity>
|
||||
<TabName>Debug Log</TabName>
|
||||
<Factory>Debug-Log</Factory>
|
||||
<Session/>
|
||||
</Tab>
|
||||
<Tab>
|
||||
<Identity>TabID-11099-7306</Identity>
|
||||
<TabName>Build</TabName>
|
||||
<Factory>Build</Factory>
|
||||
<Session/>
|
||||
</Tab>
|
||||
<Tab><Identity>TabID-4501-4793</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab><Tab><Identity>TabID-19328-10860</Identity><TabName>Breakpoints</TabName><Factory>Breakpoints</Factory></Tab></Tabs>
|
||||
|
||||
<SelectedTab>0</SelectedTab></Wnd1><Wnd4>
|
||||
<Tabs>
|
||||
<Tab>
|
||||
<Identity>TabID-11622-7296</Identity>
|
||||
<TabName>Workspace</TabName>
|
||||
<Factory>Workspace</Factory>
|
||||
<Session>
|
||||
|
||||
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source</ExpandedNode><ExpandedNode>RTOSDemo/Library Source</ExpandedNode><ExpandedNode>RTOSDemo/lwIP</ExpandedNode><ExpandedNode>RTOSDemo/lwIP/WebServer</ExpandedNode><ExpandedNode>RTOSDemo/lwIP/netif</ExpandedNode></NodeDict></Session>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
<SelectedTab>0</SelectedTab></Wnd4><Wnd5><Tabs><Tab><Identity>TabID-21421-21055</Identity><TabName>Disassembly</TabName><Factory>Disassembly</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd5></Windows>
|
||||
<Editor>
|
||||
|
||||
|
||||
|
||||
|
||||
<Pane><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Source\portable\IAR\STR91x\port.c</Filename><XPos>0</XPos><YPos>262</YPos><SelStart>8272</SelStart><SelEnd>8272</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\91x_vect_IAR.s</Filename><XPos>0</XPos><YPos>99</YPos><SelStart>4979</SelStart><SelEnd>4979</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Source\queue.c</Filename><XPos>0</XPos><YPos>420</YPos><SelStart>17603</SelStart><SelEnd>17603</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Source\portable\IAR\STR91x\portasm.s79</Filename><XPos>0</XPos><YPos>21</YPos><SelStart>2470</SelStart><SelEnd>2470</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Source\tasks.c</Filename><XPos>0</XPos><YPos>1018</YPos><SelStart>34281</SelStart><SelEnd>34281</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\FreeRTOSConfig.h</Filename><XPos>0</XPos><YPos>9</YPos><SelStart>1968</SelStart><SelEnd>1968</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\91x_init_IAR.s</Filename><XPos>0</XPos><YPos>70</YPos><SelStart>3703</SelStart><SelEnd>3703</SelEnd></Tab><ActiveTab>6</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\Library\source\91x_enet.c</Filename><XPos>1</XPos><YPos>409</YPos><SelStart>13997</SelStart><SelEnd>13997</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\webserver\uIP_Task.c</Filename><XPos>0</XPos><YPos>256</YPos><SelStart>7317</SelStart><SelEnd>7317</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\Library\include\91x_enet.h</Filename><XPos>0</XPos><YPos>126</YPos><SelStart>5481</SelStart><SelEnd>5481</SelEnd></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
|
||||
<Pane><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\str9_test\FreeRTOS_v4.5.0_STR9_rc1\Demo\ARM9_STR91X_IAR\lwip\lwipWebServer\BasicWEB.c</Filename><XPos>0</XPos><YPos>105</YPos><SelStart>4173</SelStart><SelEnd>4173</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\str9_test\FreeRTOS_v4.5.0_STR9_rc1\Demo\ARM9_STR91X_IAR\lwip\netif\ethernetif.c</Filename><XPos>0</XPos><YPos>39</YPos><SelStart>2184</SelStart><SelEnd>2184</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\str9_test\FreeRTOS_v4.5.0_STR9_rc1\Demo\ARM9_STR91X_IAR\91x_init_IAR.s</Filename><XPos>0</XPos><YPos>66</YPos><SelStart>3533</SelStart><SelEnd>3533</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\str9_test\FreeRTOS_v4.5.0_STR9_rc1\Demo\ARM9_STR91X_IAR\main.c</Filename><XPos>0</XPos><YPos>168</YPos><SelStart>6893</SelStart><SelEnd>6893</SelEnd></Tab><ActiveTab>3</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\str9_test\FreeRTOS_v4.5.0_STR9_rc1\Demo\Common\ethernet\lwIP\netif\etharp.c</Filename><XPos>0</XPos><YPos>103</YPos><SelStart>4348</SelStart><SelEnd>4348</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\str9_test\FreeRTOS_v4.5.0_STR9_rc1\Demo\ARM9_STR91X_IAR\Library\source\91x_gpio.c</Filename><XPos>0</XPos><YPos>149</YPos><SelStart>5495</SelStart><SelEnd>5495</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\str9_test\FreeRTOS_v4.5.0_STR9_rc1\Demo\Common\ethernet\lwIP\core\netif.c</Filename><XPos>0</XPos><YPos>75</YPos><SelStart>3644</SelStart><SelEnd>3644</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\str9_test\FreeRTOS_v4.5.0_STR9_rc1\Source\portable\IAR\STR91x\port.c</Filename><XPos>0</XPos><YPos>393</YPos><SelStart>12049</SelStart><SelEnd>12049</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\str9_test\FreeRTOS_v4.5.0_STR9_rc1\Demo\ARM9_STR91X_IAR\STCode\lcd.c</Filename><XPos>0</XPos><YPos>332</YPos><SelStart>20082</SelStart><SelEnd>20082</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\str9_test\FreeRTOS_v4.5.0_STR9_rc1\Demo\Common\ethernet\lwIP\api\tcpip.c</Filename><XPos>0</XPos><YPos>174</YPos><SelStart>4850</SelStart><SelEnd>4867</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\str9_test\FreeRTOS_v4.5.0_STR9_rc1\Source\tasks.c</Filename><XPos>0</XPos><YPos>516</YPos><SelStart>19652</SelStart><SelEnd>19662</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\str9_test\FreeRTOS_v4.5.0_STR9_rc1\Demo\ARM9_STR91X_IAR\Library\source\91x_enet.c</Filename><XPos>0</XPos><YPos>397</YPos><SelStart>13417</SelStart><SelEnd>13417</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\str9_test\FreeRTOS_v4.5.0_STR9_rc1\Demo\ARM9_STR91X_IAR\lwip\api\sys_arch.c</Filename><XPos>0</XPos><YPos>316</YPos><SelStart>9502</SelStart><SelEnd>9502</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\str9_test\FreeRTOS_v4.5.0_STR9_rc1\Demo\ARM9_STR91X_IAR\FreeRTOSConfig.h</Filename><XPos>0</XPos><YPos>45</YPos><SelStart>2635</SelStart><SelEnd>2635</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\str9_test\FreeRTOS_v4.5.0_STR9_rc1\Demo\ARM9_STR91X_IAR\lwip\include\lwip\lwipopts.h</Filename><XPos>0</XPos><YPos>18</YPos><SelStart>1789</SelStart><SelEnd>1789</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\str9_test\FreeRTOS_v4.5.0_STR9_rc1\Demo\ARM9_STR91X_IAR\lwip\include\lwIPWebServer\BasicWEB.h</Filename><XPos>0</XPos><YPos>21</YPos><SelStart>1878</SelStart><SelEnd>1878</SelEnd></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
|
||||
<Positions>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<Top><Row0><Sizes><Toolbar-00a0baa0><key>iaridepm1</key></Toolbar-00a0baa0><Toolbar-01af6ce0><key>debuggergui1</key></Toolbar-01af6ce0></Sizes></Row0></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>728</Bottom><Right>279</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>194</yscreen><sizeHorzCX>142857</sizeHorzCX><sizeHorzCY>199588</sizeHorzCY><sizeVertCX>200714</sizeVertCX><sizeVertCY>751029</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>198</Bottom><Right>1402</Right><x>-2</x><y>-2</y><xscreen>1404</xscreen><yscreen>200</yscreen><sizeHorzCX>1002857</sizeHorzCX><sizeHorzCY>205761</sizeHorzCY><sizeVertCX>142857</sizeVertCX><sizeVertCY>205761</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||
<Top><Row0><Sizes><Toolbar-0087eff8><key>iaridepm.enu1</key></Toolbar-0087eff8><Toolbar-03d99498><key>debuggergui.enu1</key></Toolbar-03d99498></Sizes></Row0></Top><Left><Row0><Sizes><Wnd4><Rect><Top>-2</Top><Left>-2</Left><Bottom>740</Bottom><Right>342</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>142857</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>245714</sizeVertCX><sizeVertCY>755601</sizeVertCY></Rect></Wnd4></Sizes></Row0></Left><Right><Row0><Sizes><Wnd5><Rect><Top>-2</Top><Left>-2</Left><Bottom>740</Bottom><Right>198</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>142857</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>142857</sizeVertCX><sizeVertCY>755601</sizeVertCY></Rect></Wnd5></Sizes></Row0></Right><Bottom><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>198</Bottom><Right>1402</Right><x>-2</x><y>-2</y><xscreen>1404</xscreen><yscreen>200</yscreen><sizeHorzCX>1002857</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>142857</sizeVertCX><sizeVertCY>203666</sizeVertCY></Rect></Wnd1></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||
</Desktop>
|
||||
</Project>
|
||||
|
||||
|
|
|
@ -1,10 +1,24 @@
|
|||
[DisAssemblyWindow]
|
||||
NumStates=_ 1
|
||||
State 1=_ 1
|
||||
[JLinkDriver]
|
||||
WatchCond=_ 0
|
||||
Watch0=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0
|
||||
Watch1=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0
|
||||
[DisAssemblyWindow]
|
||||
NumStates=_ 1
|
||||
State 1=_ 1
|
||||
[Profiling]
|
||||
Enabled=0
|
||||
[StackPlugin]
|
||||
Enabled=1
|
||||
OverflowWarningsEnabled=1
|
||||
WarningThreshold=90
|
||||
SpWarningsEnabled=1
|
||||
WarnHow=0
|
||||
UseTrigger=1
|
||||
TriggerName=main
|
||||
LimitSize=0
|
||||
ByteLimit=50
|
||||
[BreakpointUsageDialog]
|
||||
Placement=_ 144 186 919 647
|
||||
[Log file]
|
||||
LoggingEnabled=_ 0
|
||||
LogFile=_ ""
|
||||
|
@ -13,7 +27,7 @@ Category=_ 0
|
|||
LoggingEnabled=_ 0
|
||||
LogFile=_ ""
|
||||
[Disassemble mode]
|
||||
mode=2
|
||||
mode=0
|
||||
[Breakpoints]
|
||||
Count=0
|
||||
[TraceHelper]
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<Workspace>
|
||||
<ConfigDictionary>
|
||||
|
||||
<CurrentConfigs><Project>RTOSDemo/THUMB</Project></CurrentConfigs></ConfigDictionary>
|
||||
<CurrentConfigs><Project>RTOSDemo/ARM - lwIP - D</Project></CurrentConfigs></ConfigDictionary>
|
||||
<Desktop>
|
||||
<Static>
|
||||
<Workspace>
|
||||
|
@ -12,54 +12,56 @@
|
|||
|
||||
|
||||
|
||||
<Column0>236</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
|
||||
<Column0>328</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
|
||||
</Workspace>
|
||||
<Build>
|
||||
|
||||
|
||||
|
||||
|
||||
<ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1004</ColumnWidth1><ColumnWidth2>267</ColumnWidth2><ColumnWidth3>66</ColumnWidth3></Build>
|
||||
</Static>
|
||||
<ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1006</ColumnWidth1><ColumnWidth2>268</ColumnWidth2><ColumnWidth3>67</ColumnWidth3></Build>
|
||||
<TerminalIO/>
|
||||
<CodeCoveragePlugin/>
|
||||
<Debug-Log/><Find-in-Files><ColumnWidth0>682</ColumnWidth0><ColumnWidth1>68</ColumnWidth1><ColumnWidth2>826</ColumnWidth2></Find-in-Files><Disassembly><MixedMode>1</MixedMode><CodeCovEnabled>0</CodeCovEnabled><CodeCovShow>0</CodeCovShow></Disassembly></Static>
|
||||
<Windows>
|
||||
|
||||
|
||||
<Wnd2>
|
||||
<Wnd0>
|
||||
<Tabs>
|
||||
<Tab>
|
||||
<Identity>TabID-5518-19908</Identity>
|
||||
<Identity>TabID-13420-7058</Identity>
|
||||
<TabName>Workspace</TabName>
|
||||
<Factory>Workspace</Factory>
|
||||
<Session>
|
||||
|
||||
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode><ExpandedNode>RTOSDemo/Demo Source</ExpandedNode></NodeDict></Session>
|
||||
<NodeDict><ExpandedNode>RTOSDemo</ExpandedNode></NodeDict></Session>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
<SelectedTab>0</SelectedTab></Wnd2><Wnd3>
|
||||
<SelectedTab>0</SelectedTab></Wnd0><Wnd2>
|
||||
<Tabs>
|
||||
<Tab>
|
||||
<Identity>TabID-22895-20401</Identity>
|
||||
<Identity>TabID-22078-7100</Identity>
|
||||
<TabName>Build</TabName>
|
||||
<Factory>Build</Factory>
|
||||
<Session/>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
<Tab><Identity>TabID-3326-16295</Identity><TabName>Debug Log</TabName><Factory>Debug-Log</Factory><Session/></Tab><Tab><Identity>TabID-12949-6886</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab></Tabs>
|
||||
|
||||
<SelectedTab>0</SelectedTab></Wnd3></Windows>
|
||||
<SelectedTab>0</SelectedTab></Wnd2></Windows>
|
||||
<Editor>
|
||||
|
||||
|
||||
|
||||
|
||||
<Pane><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\webserver\uIP_Task.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>1913</SelStart><SelEnd>1925</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>C:\E\Dev\FreeRTOS\Demo\ARM9_STR91X_IAR\main.c</Filename><XPos>0</XPos><YPos>27</YPos><SelStart>2708</SelStart><SelEnd>3382</SelEnd></Tab><ActiveTab>1</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
|
||||
<Pane><Tab><Factory>TextEditor</Factory><Filename>C:\Temp\STR9\str9_test\FreeRTOS_v4.5.0_STR9_rc2\Demo\ARM9_STR91X_IAR\main.c</Filename><XPos>0</XPos><YPos>201</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd></Tab><ActiveTab>0</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
|
||||
<Positions>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<Top><Row0><Sizes><Toolbar-00a0baa0><key>iaridepm1</key></Toolbar-00a0baa0></Sizes></Row0></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>363</Bottom><Right>310</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>142857</sizeHorzCX><sizeHorzCY>205761</sizeHorzCY><sizeVertCX>222857</sizeVertCX><sizeVertCY>751029</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>198</Bottom><Right>1402</Right><x>-2</x><y>-2</y><xscreen>1404</xscreen><yscreen>200</yscreen><sizeHorzCX>1002857</sizeHorzCX><sizeHorzCY>205761</sizeHorzCY><sizeVertCX>142857</sizeVertCX><sizeVertCY>205761</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||
<Top><Row0><Sizes><Toolbar-0087f048><key>iaridepm.enu1</key></Toolbar-0087f048></Sizes></Row0></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>606</Bottom><Right>402</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>142857</sizeHorzCX><sizeHorzCY>203666</sizeHorzCY><sizeVertCX>288571</sizeVertCX><sizeVertCY>619145</sizeVertCY></Rect></Wnd0></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>332</Bottom><Right>1402</Right><x>-2</x><y>-2</y><xscreen>1404</xscreen><yscreen>334</yscreen><sizeHorzCX>1002857</sizeHorzCX><sizeHorzCY>340122</sizeHorzCY><sizeVertCX>142857</sizeVertCX><sizeVertCY>203666</sizeVertCY></Rect></Wnd2></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||
</Desktop>
|
||||
</Workspace>
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
FreeRTOS.org V4.4.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
FreeRTOS.org V4.5.0 - Copyright (C) 2003-2007 Richard Barry.
|
||||
|
||||
This file is part of the FreeRTOS.org distribution.
|
||||
|
||||
|
@ -59,13 +59,13 @@
|
|||
#define uipMAC_ADDR2 0x13
|
||||
#define uipMAC_ADDR3 0x14
|
||||
#define uipMAC_ADDR4 0x15
|
||||
#define uipMAC_ADDR5 0x16
|
||||
#define uipMAC_ADDR5 0x20
|
||||
|
||||
/* IP address configuration. */
|
||||
#define uipIP_ADDR0 172
|
||||
#define uipIP_ADDR1 25
|
||||
#define uipIP_ADDR2 218
|
||||
#define uipIP_ADDR3 26
|
||||
#define uipIP_ADDR3 11
|
||||
|
||||
/* Shortcut to the header within the Rx buffer. */
|
||||
#define xHeader ((struct uip_eth_hdr *) &uip_buf[ 0 ])
|
||||
|
@ -85,8 +85,8 @@
|
|||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* Send the uIP buffer to the MAC.
|
||||
/*
|
||||
* Send the uIP buffer to the MAC.
|
||||
*/
|
||||
static void prvENET_Send(void);
|
||||
|
||||
|
@ -143,7 +143,7 @@ struct timer periodic_timer, arp_timer;
|
|||
httpd_init();
|
||||
|
||||
/* Initialise the MAC. */
|
||||
ENET_InitClocksGPIO();
|
||||
ENET_InitClocksGPIO();
|
||||
ENET_Init();
|
||||
portENTER_CRITICAL();
|
||||
{
|
||||
|
@ -170,8 +170,8 @@ struct timer periodic_timer, arp_timer;
|
|||
uip_arp_ipin();
|
||||
uip_input();
|
||||
|
||||
/* If the above function invocation resulted in data that
|
||||
should be sent out on the network, the global variable
|
||||
/* If the above function invocation resulted in data that
|
||||
should be sent out on the network, the global variable
|
||||
uip_len is set to a value > 0. */
|
||||
if( uip_len > 0 )
|
||||
{
|
||||
|
@ -183,8 +183,8 @@ struct timer periodic_timer, arp_timer;
|
|||
{
|
||||
uip_arp_arpin();
|
||||
|
||||
/* If the above function invocation resulted in data that
|
||||
should be sent out on the network, the global variable
|
||||
/* If the above function invocation resulted in data that
|
||||
should be sent out on the network, the global variable
|
||||
uip_len is set to a value > 0. */
|
||||
if( uip_len > 0 )
|
||||
{
|
||||
|
@ -201,8 +201,8 @@ struct timer periodic_timer, arp_timer;
|
|||
{
|
||||
uip_periodic( i );
|
||||
|
||||
/* If the above function invocation resulted in data that
|
||||
should be sent out on the network, the global variable
|
||||
/* If the above function invocation resulted in data that
|
||||
should be sent out on the network, the global variable
|
||||
uip_len is set to a value > 0. */
|
||||
if( uip_len > 0 )
|
||||
{
|
||||
|
@ -250,7 +250,7 @@ static unsigned portCHAR *pcTxData;
|
|||
vTaskDelay( uipBUFFER_WAIT_DELAY );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if( pcTxData )
|
||||
{
|
||||
/* Copy the header into the Tx buffer. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue